Avatar billede loukas Mester
03. november 2002 - 19:06 Der er 13 kommentarer og
1 løsning

Udelukke ord

Jeg har lavet en gæstebog, fint nok.
Nu ville jeg gerne kunne kontrollere hvad folk skriver.
Altså skal det ikke være muligt at skrive bestemte ord som perker, luder osv....
Ukvemsordene er i en DB
Avatar billede Slettet bruger
03. november 2002 - 19:08 #1
Lidt ala:
If ord = index of ord1, ord2, ord3 replace with censur ?
Avatar billede eagleeye Praktikant
03. november 2002 - 19:09 #2
Du kan lave en replace af dem.:

str = Request.form("besked_til_gæstebogen")
str = Replace(str, "perker", "xxx", 1,-1,1)
str = Replace(str, "luder", "xxx", 1,-1,1)

osv..
Avatar billede eagleeye Praktikant
03. november 2002 - 19:11 #3
arh så du har en liste i en DB..... så kan du lave et loop

SQL = "SELECT * FROM Ukvemsordene"
Set uRS = Conn.Execute(SQL)

str = Request.form("besked_til_gæstebogen")
do while not uRS.EOF
  str = Replace(str, rs("nejtakord_kolonne"), "xxx", 1,-1,1
  uRS.MoveNext
loop
Avatar billede eagleeye Praktikant
03. november 2002 - 19:11 #4
der mangelre en ) til sidst:
str = Replace(str, rs("nejtakord_kolonne"), "xxx", 1,-1,1)
Avatar billede eagleeye Praktikant
03. november 2002 - 19:13 #5
Det med replace (...,1,-1,1); Det sidste 1 gør den ikke er casesenativ så både Luder,luder,LUDER,luDer,mmm fjernes.
Avatar billede loukas Mester
03. november 2002 - 19:13 #6
OK, tak-
Jeg prøver lige lidt
Avatar billede Slettet bruger
03. november 2002 - 19:15 #7
Måske sjovere hvis du erstatter hvert enkelt ord med et pænere udgave. godt nok mere bøvlet men alligevel.
Avatar billede loukas Mester
03. november 2002 - 19:35 #8
Jeg synes ikke rigtigt der sker noget ??

Du får lige hele koden her :

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("gaestebog.mdb") & ";UID=admin;PWD=;"

SQL = "SELECT * FROM ukvemsord"
Set uRS = Conn.Execute(SQL)

str = Request.form("besked")
do while not uRS.EOF
  str = Replace(str, uRS("ord"), "xxx", 1,-1,1)
  uRS.MoveNext
loop

Const adOpenKeyset = 1
Const adLockOptimistic = 3


    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From gaestebogen"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs("Navn") = Request.form("Navn")
      rs("Email") = Request.form("Email")
      rs("Besked") = Request.form("Besked")
      rs("Dato") = Now()
      rs("IP") = request.servervariables("remote_Addr")
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
Avatar billede loukas Mester
03. november 2002 - 19:42 #9
joo, ideen er da god <<schulze
Avatar billede eagleeye Praktikant
03. november 2002 - 22:12 #10
Så skal du rette denne linie:
rs("Besked") = Request.form("Besked")
     

til:
rs("Besked") = str

Eller ligger du det indtasede i databasen og ikke det hvor ordne er fjernet.
Avatar billede loukas Mester
04. november 2002 - 11:35 #11
joo, nu virker det skam, men !!
den replacer jo også inde midt i et ord..
f.eks: sol
databasen indeholder ukvemsordet: so
altså bliver det til xxxl
hmmm, ikke så godt
Avatar billede eagleeye Praktikant
05. november 2002 - 22:21 #12
Så skal det være noge med regExp som skal bruges til at udskift med:


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("gaestebog.mdb") & ";UID=admin;PWD=;"

SQL = "SELECT * FROM ukvemsord"
Set uRS = Conn.Execute(SQL)

str = Request.form("besked")

Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True

do while not uRS.EOF
  regEx.Pattern = "((^|[^a-z])" & uRS("ord") & "([^a-z]|$))"
  str = regEx.Replace (str, " xxx ")
  uRS.MoveNext
loop
Set regEx = Nothing

Response.Write str
Avatar billede loukas Mester
06. november 2002 - 00:03 #13
Jamen !! det fungere jo :-)
Nu er det meget lidt jeg har kigget på RegExp.
Hvis du ville give en kort forklaring på hvad der sker:
regEx.Pattern = "((^|[^a-z])" & uRS("ord") & "([^a-z]|$))"


Mange tak for hjælpen
Avatar billede eagleeye Praktikant
06. november 2002 - 00:11 #14
I bund og grund søger denefter det som står i  uRS("ord").
Det førte (^|[^a-z]) betyder at der foran ord ikke må være bogstaver [^a-z] eller det er første ord i linien ^

Det sidste ([^a-z]|$) betyder noget i samme stil. Der må ikke være bogstaver efter det ord man søger på [^a-z], men ordet må godt være det sidste ord i linien $.


Du kan se mere her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vspropattern.asp
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