Avatar billede lifeweb Nybegynder
07. juli 2003 - 15:04 Der er 8 kommentarer og
1 løsning

Gennemsøge string

Hej

Jeg har brug for et script der kan gennemsøge en string efter uønskede ord...

Hvordan er det nu lige man kringler den med ASP???

Jeg vil gerne kunne gennemsøge stringen, og hvis den finder et uønsket ord så skal den udføre en handling...
Avatar billede zembla Nybegynder
07. juli 2003 - 15:14 #1
Du bruger metoden 'instr', fx sådan:

dim str : str="han sagde lort"
if instr(str,"lort")>0 then
    Response.Write "det må du ikke sige"
end if
Avatar billede hiks Nybegynder
07. juli 2003 - 15:18 #2
næsten lig zemblas løsning men bruger bare et array som gennemløbes! zembla var bare hurtigere... :(

hva med at lave et array med dine uønskede ord og siden så gennemsøge strengen med:

i=0
for i = 1 to ubound(ditarray)
  if instr(1,ditarray(i),dinstreng) <> 0 then
    gør noget fordi det ikke blev fundet
  else
    gør en handling fordi det forbudte ord blev fundet
  end if
next i

/hiks
Avatar billede eagleeye Praktikant
07. juli 2003 - 18:23 #3
Eks hvis man fjerne pis ukritisk så vil: 
Den er pist væk. 
blive til:
Den er t væk.

Altså ender lovlige ord med at være ukendelige og stiller dne som har skrevet ordet i dårligt lys. Så her et eks med regular expression som kun fjerne hele ord. Iøjeblikket sætter den bare xxx ind i stedet for ordet. Hver ulovligt ord står i listen ulovligeord og skal her i dette eks skilles med et |: "pis|lort|vand|"

<%
str = "En lang streng med ulovlige ord som skal fjernes. Fis med dig, fjern mig"

Response.Write str & "<br>"

ulovligeord = "en|med|fjernes|mig"
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True

regEx.Pattern = "(^|[^a-z])" & ulovligeord & "([^a-z]|$)"
str = regEx.Replace (str, "$1xxx$2")
Set regEx = Nothing

Response.Write str
%>


En anden ting husk på folk finder hurtigt ud af det og begynder at skrive ekevis z i stedet for s og evt men flere ens bogstaver. piiis. Så der skal være en liste som stadig udvides.
Avatar billede lifeweb Nybegynder
08. juli 2003 - 11:42 #4
Jeg kan ikke få det til at virke efter hensigten...

Jeg vil gerne forhindre at folk skriver nogle bestemte ting i en gæstebog - altså en form for censur...
Den skal ikke replace eller noget - den skal bare give brugeren besked om at der er uønskede ord i det der er sendt til scriptet...

Hvis jeg bruger zemblas eller eagleeyes script kan jeg fx sige at "abc" er et uønsket ord, men hvis brugeren så sender " abc" til scriptet - så virker det ikke...
Avatar billede eagleeye Praktikant
08. juli 2003 - 19:38 #5
Ok så prøv at lave det om til dette den replacer ikke noget, men jeg forstår ikke helt det du skriver med den ikke virker med " abc "
Prøv med dette:


<%
str = " abc "
Response.Write str & "<br>"

ulovligeord = "abc"

Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "(^|[^a-z])" & ulovligeord & "([^a-z]|$)"

isBad = regEx.Test (str)
Set regEx = Nothing


if isBad = true then
  Response.Write "Den går ikke, du har brugt nogle fy ord."
else
  Response.Write "Ok gem" 
end if
%>
Avatar billede eagleeye Praktikant
28. august 2003 - 12:13 #6
Lidt feedback ville være fint.
Det var vist på tide at kommentere eller få lukket dette spørgsmål.
Avatar billede lifeweb Nybegynder
28. august 2003 - 22:20 #7
tak for jeres forsøg på hjælp - men det har ikke hjulpet mig
Avatar billede lifeweb Nybegynder
28. august 2003 - 22:21 #8
lukker
Avatar billede eagleeye Praktikant
28. august 2003 - 22:26 #9
hmm hvad var der så galt med dem. Den sidste jeg viste kunne det du bad om

* Den skal ikke replace eller noget - den skal bare give brugeren besked om at der er uønskede ord i det der er sendt til scriptet...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester