Home Ontwerp je site PHP Een scheldwoordenfilter maken

Een scheldwoordenfilter maken

Je bezoekers interactiemogelijkheden gunnen is wel goed, maar niet alle bezoekers zijn even vriendelijk. Sommige gebruiken en misbruiken gastenboeken en andere interactiemogelijkheden om allerlei vunzigheden op het publiek los te laten.

Als webmaster (van een deftige website) kun je dat natuurlijk niet zomaar laten gebeuren. Wanneer je zo'n bericht ziet, verwijder je dat dan ook zo snel mogelijk.

Toch is deze situatie verre van ideaal; je kunt immers niet dag en nacht je website in het oog houden.

Je zou dan ook een methode moeten vinden die er automatisch voor zorgt dat een aantal aanstootgevende termen niet kunnen ingevoerd worden. We hebben dus nood aan een scheldwoordenfilter.

Om zo'n scheldwoordenfilter te maken moeten we eerst zelf een lijstje maken van allerlei woorden die we niet willen toelaten in berichten. In dit voorbeeld willen we dat de woorden "sex", "fuck" en "hoer" niet in een bericht kunnen worden gepost. Voert iemand toch deze termen in, dan worden deze vervangen door sterretjes.

Te blokkeren woordenlijst aanleggen

We gaan dit script in de vorm van een functie gieten. Zo hoeven we de lijst van scheldwoorden slechts één keer op te stellen en kunnen we de functie zo vaak toepassen dan nodig. Het script ziet er zo uit:

<?php
function filter($string="")
{

//scheldwoordenfilter

$string str_replace("sex","****",$string);
$string str_replace("fuck","f***",$string);
$string str_replace("hoer ","****",$string);

return 
$string;
}
?>

Wij hebben hier nu enkele scheldwoorden opgesomd, maar je kunt natuurlijk zelf ook nog regels toevoegen.

Variabelen aanpassen

De woorden die we opgegeven hebben, moeten exact hetzelfde geschreven worden om geblokkeerd te worden. In de praktijk betekent dat dat het woord sEx niet zal tegengehouden worden. Daarvoor moeten we we de functie eregi_replace() gebruiken. Het i'tje achteraan duidt op case insensitive. Het gebruik van hoofdletters zal dus genegeerd hebben en dat is net wat we hier nodig hebben. Je kunt eventueel ook gebruik maken van de functie str_ireplace() die geïntroduceerd is in PHP versie 5. De code ziet er dus als volgt uit:

<?php
function filter($string="")
{

//scheldwoordenfilter

$string eregi_replace("sex","****",$string);
$string eregi_replace("fuck","f***",$string);
$string eregi_replace("hoer ","****",$string);

return 
$string;
}
?>

Het toepassen van deze functie gebeurt op deze manier:

<?php
echo filter($bericht);
?>

Het bericht (dat we bijvoorbeeld uitlezen uit een database) wordt in een variabele

$bericht
gestopt en vervolgens door onze functie
filter()
gehaald bij het weergeven op het scherm. Alle scheldwoorden die voorkomen, worden vervangen door sterretjes.

 

Resultaat

Als iemand toch deze woorden gebruikt in een bericht, kan dit er zo uitzien:

F***, door die scheldwoordenfilter kan ik de woorden **** en **** niet meer op een website plaatsen.

6 + 9 =
 

GOOGLE adsense