webForumDet fria alternativet

Replace

23 svar · 339 visningar · startad av qwerty

qwertyMedlem sedan jan. 2001391 inlägg
#1

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%>

------------------
Qwerty

Den som provar han testar...

PatrikBMedlem sedan mars 20002 836 inlägg
#2

... 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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

@ndersMedlem sedan juni 200032 969 inlägg
#3

vad är strString? när skapar du den? är det inte innehållet i a du ska censurera?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

@ndersMedlem sedan juni 200032 969 inlägg
#4

håll käften, patrikb! ;)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

PatrikBMedlem sedan mars 20002 836 inlägg
#5

he, he ... hann före @nders för en ggns skull :)

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

qwertyMedlem sedan jan. 2001391 inlägg
#6

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?

------------------
Qwerty

Den som provar han testar...

PatrikBMedlem sedan mars 20002 836 inlägg
#7

Ä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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

@ndersMedlem sedan juni 200032 969 inlägg
#8

du vet om att du gör en case sensitive replace, antar jag.

själva koden fungerar nämligen utmärkt.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

@ndersMedlem sedan juni 200032 969 inlägg
#9

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.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

[Redigerat av @nders den 09 apr 2001]

PatrikBMedlem sedan mars 20002 836 inlägg
#10

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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

PatrikBMedlem sedan mars 20002 836 inlägg
#11

... 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&#0124;skit&#0124;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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

[Redigerat av PatrikB den 09 apr 2001]

qwertyMedlem sedan jan. 2001391 inlägg
#12

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?

------------------
Qwerty

Den som provar han testar...

PatrikBMedlem sedan mars 20002 836 inlägg
#13

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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

qwertyMedlem sedan jan. 2001391 inlägg
#14

kanske är jag knäpp
...men var placerar jag listan med de "fula orden".

------------------
Qwerty

Den som provar han testar...

qwertyMedlem sedan jan. 2001391 inlägg
#15

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...

------------------
Qwerty

Den som provar han testar...

PatrikBMedlem sedan mars 20002 836 inlägg
#16

... 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

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

qwertyMedlem sedan jan. 2001391 inlägg
#17

..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?

------------------
Qwerty

Den som provar han testar...

qwertyMedlem sedan jan. 2001391 inlägg
#18

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.

------------------
Qwerty

Den som provar han testar...

PatrikBMedlem sedan mars 20002 836 inlägg
#19

hur har du sparat texten i filen?

cya,
PatrikB

------------------
Ingenting är omöjligt.
Det omöjliga tar bara något längre tid att genomföra.

[Redigerat av PatrikB den 10 apr 2001]

qwertyMedlem sedan jan. 2001391 inlägg
#20

jag har bara skrivit alla ord i en lång rad i en textfil med "skriv text". Helt rent från taggar och annat.

------------------
Qwerty

Den som provar han testar...

139 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)