Scheldwoordenfilter? #@@#%@%
Hallo beste php'ers, ik heb weer eens een vraag.
Ik ben nu bezig aan een forum voor een website, waar een scheldwoordenfilter in moet komen. Ik was gelijk al druk begonnen met schrijven en had een leuke functie.
Helaas: PHP laat het niet toe dat gedefineerd(fuck) waarde(FuCk) veranderd naar een andere waarde.
Op de server staat PHP4, dus str_ireplace() is helaas niet mogenlijk.
Ik heb nu deze functie, maar daar ben ik niet tevreden mee :(
Wie kan me helpen aan een script dat scheldwoorden kan veranderen, naar bijvoorbeeld !@#$#%, zonder dat ik elk scheldwoord op ieder mogelijke manier hoef in te vullen in de database.
Dit is mijn code nu:
Ik ben nu bezig aan een forum voor een website, waar een scheldwoordenfilter in moet komen. Ik was gelijk al druk begonnen met schrijven en had een leuke functie.
Helaas: PHP laat het niet toe dat gedefineerd(fuck) waarde(FuCk) veranderd naar een andere waarde.
Op de server staat PHP4, dus str_ireplace() is helaas niet mogenlijk.
Ik heb nu deze functie, maar daar ben ik niet tevreden mee :(
Wie kan me helpen aan een script dat scheldwoorden kan veranderen, naar bijvoorbeeld !@#$#%, zonder dat ik elk scheldwoord op ieder mogelijke manier hoef in te vullen in de database.
Dit is mijn code nu:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
function filter($text){
$search=mysql_query("SELECT word,result FROM filter");
while(list($searchstr,$searchrpl)=mysql_fetch_row($search)){
for($i=0;$i<(strlen($text)-strlen($searchstr));$i++){
if(strtolower(substr($text,$i,strlen($searchstr)))==strtolower($searchstr)){
$text=substr_replace($text,$searchrpl,$i,strlen($searchstr));
}
}
}
return $text;
}
?>
function filter($text){
$search=mysql_query("SELECT word,result FROM filter");
while(list($searchstr,$searchrpl)=mysql_fetch_row($search)){
for($i=0;$i<(strlen($text)-strlen($searchstr));$i++){
if(strtolower(substr($text,$i,strlen($searchstr)))==strtolower($searchstr)){
$text=substr_replace($text,$searchrpl,$i,strlen($searchstr));
}
}
}
return $text;
}
?>
Gesponsorde koppelingen:
Hoofd en kleine letters is niet zo'n probleem, maar een functie vinden die cijfers en andere vervorming meeneemt is een stuk lastiger.
Voor alleen hoof-kleine letters, kijk eens naar
preg_replace()
Daar kun je een array gebruiken met patterns (database records in array stoppen), die allemaal door de zelfde string vervangen worden. (of allemaal door een andere string)
Voor alleen hoof-kleine letters, kijk eens naar
preg_replace()
Daar kun je een array gebruiken met patterns (database records in array stoppen), die allemaal door de zelfde string vervangen worden. (of allemaal door een andere string)
ik weet al wat er mis was, ik had geen result in de database ingevoerd... dus kreeg je een spatie...
Nu heb ik dat wel gedaan en geeft ie een mooie !#$#%$# wanneer er geen string is en waneer die er wel is, geeft ie het vervangende woord :D
Nu heb ik dat wel gedaan en geeft ie een mooie !#$#%$# wanneer er geen string is en waneer die er wel is, geeft ie het vervangende woord :D



