... därför att strString är tom enligt koden du visar. Antar att det du vill kolla är strängen som finns i variabeln a. Byt a mot strString så kommer det nog att funka =P
cya,
PatrikB
23 svar · 403 visningar · startad av qwerty
Varför byter inte denna kod ut de fula orden?
<%
a=Request.Form("textfield")
Application("BadWords") = "Skit Fan Helvete"
strBadWords = Application("BadWords")
arrBadWords = Split(StrBadWords)
For I = LBound(arrBadWords) To UBound(arrBadWords)
strString = Replace (strString,arrBadWords(I),"*****")
Next
%>
<% =a%>
... därför att strString är tom enligt koden du visar. Antar att det du vill kolla är strängen som finns i variabeln a. Byt a mot strString så kommer det nog att funka =P
cya,
PatrikB
vad är strString? när skapar du den? är det inte innehållet i a du ska censurera?
håll käften, patrikb!
he, he ... hann före @nders för en ggns skull
Koden ser nu ut så här:
<%
Application("BadWords") = "Skit Fan Helvete"
strString=Request.Form("textfield")
strBadWords = Application("BadWords")
arrBadWords = Split(StrBadWords)
For I = LBound(arrBadWords) To UBound(arrBadWords)
strString = Replace (strString,arrBadWords(I),"*****")
Next
%>
<% =strString%>
...men den funkar fortfarande inte. Skriver ut fan och de andra orden.
Nån som vet felet?
Ändra din Application med badword till:
Application("BadWords") = "skit fan helvete"
Sedan ändrar du i själva replacen:
strString = Replace (LCase(strString),arrBadWords(I),"*****")
borde göra susen ...
cya,
PatrikB
du vet om att du gör en case sensitive replace, antar jag.
själva koden fungerar nämligen utmärkt.
patrikb, vad har jag sagt?
fast problemet med din kod är ju att den resulterande strängen blir lower case.
jag hade nog använt regexp till detta.
jepp, vet att den ändrar allt till LowerCase.
Skulle nog oxå använt mig av RegExp ... fast där är man lite lost så att säga ... men jobbar på den saken =P
Har för mig att Vide har en bra artikel om RegExp
cya,
PatrikB
... he, he ... fixade till en liten funktion med regext =P
Function checkBadWord(StringToCheck)
Dim objRegExp, match, matches
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = true
'## -- byt ut fan, skit, helvet under så att det passar
'## dina fula ord. Tänk på att det måste avgränsas med
'## pipe och inget annat ... tror jag =P
objRegExp.Pattern = "(fan|skit|helvete)"
Set matches = objRegExp.Execute(StringToCheck)
For Each match In matches
StringToCheck = Replace(StringToCheck,match,"*****")
Next
Set matches = Nothing
Set objRegExp = Nothing
checkBadWord = StringToCheck
End Function
Med qwertys exempel:
strString = Request.Form("textfield")
Response.Write checkBadWord(strString)
hoppas nu att den funkar ... ;o
cya,
PatrikB
Tack alla!
det funkar.
...om jag skulle vilja utveckla funktionen och lägga alla de små fula orden i en databas eller i en textfil. Hur skulle man gå till väga då?
Alltså att man lägger upp alla "bad words" och ett ersättningsord för alla.
tex
helvete - helsefyr
jävlar - järnspikar osv.
...för det måste väl vara ett effektivare sätt eller?
visst kan man göra det.
Vet inte hur prestandan blir men funkar gör det:
Function checkBadWord(StringToCheck)
Dim objRegExp, match, matches, arrPattern, I
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = true
arrPattern = Split(Application("BadWords"))
For I = LBound(arrPattern) TO UBound(arrPattern)
objRegExp.Pattern = arrPattern(I)
Set matches = objRegExp.Execute(StringToCheck)
For Each match In matches
StringToCheck = Replace(StringToCheck,match,"*****")
Next
Set matches = Nothing
Next
Set objRegExp = Nothing
checkBadWord = StringToCheck
End Function
Som du ser så splittar jag upp Application objektet till en array och loopar genom arrayen och kör en match för varje värde i arrayen.
cya,
PatrikB
kanske är jag knäpp
...men var placerar jag listan med de "fula orden".
Det löste sig!
Och för ni som är lika dumma som mig:
Man läser in textfilen i application!
man lär sig något varje dag...
... och den inläsningen bör ske i global.asa's Sub Application_OnStart ...
Annars gör man en global variabel av alla badwords separerade med mellanslag som sedan inkluderas på alla sidor där badword checken ska vara.
cya,
PatrikB
..men om man bara har badwordchecken på en enda sida kan man väl bara läsa in "ordlistan" där?
Förresten: Ingen som vet var man kan hitta en lista över svordomar och liknande fula ord?
checka ut detta:
jag har lagt en massa fula ord i en textfil åtskiljda av mellanslag. Allt fukar ända tills man kommer till en svordom som innehåller åäö. Då står det där "jävla"-ordet kvar. Hur ska jag göra för att den ska ersätta även de ord som innehåller ä. Har försök lägga in orden html-formaterade i ordlistan (jävlar), men det hjälpte inte. Tacksam för tips.
jag har bara skrivit alla ord i en lång rad i en textfil med "skriv text". Helt rent från taggar och annat.