Détecter / trouver une liste de mots interdits (bani) dans une chaine (de caractères) en php

Petite fonction « vite faite » permettant de détecter dans une chaîne de caractères, si un ou des mots bannis y figurent.

Dans la pratique, cela servirait en bloquer une action en cas de mots injurieux.

La fonction:

<?php
function IsBLWord($string)
    {
        //LISTE DES MOTS A TROUVER
        $badword=array("CONNARD","ENCULE");


        $i = 0; //initialisation du compteur
        $Cbadword=count($badword);
            while ($i <= $Cbadword-1) {
                if (preg_match("/b$badword[$i]b/i", $string))
                    {
                        $i=$Cbadword; //un des mots a été trouvé, on stop la boucle
                        $finded="1";  //on indique qu'un mot a été trouvé
                    }
                else
                    {
                        $finded="0";    //on indique qu'aucun mot a été trouvé
                    }
                
                $i++;
            }

        if($finded=="1")
            {RETURN true;} //on mot été trouvé, on retourne true
        else
            {RETURN false;} //aucun mot a été trouvé, on retourne false
    }
?>


Utilisation :

<?php
$txt="Le voila le connard du quartier";

if(IsBLWord($txt)==TRUE)
     {
          exit; //on bloque l'action car le terme "connard" figure dans la chaine.

    }

 

?>

 

Il y a certainement moyen d'optimiser cela... ou utiliser une autre regex.
mais celle-ci fonctionne très bien pour mon utilisation :)

UPDATE : La fonction PHP strpos() peut être utilisée si l'on veut détecter qu'un mot.


Publié le 06 Mai 2009 par luca | Ecouter l'article

Publié dans : Programmation

Accueil Précédent Suivant