2010-09-09 4 views
1

J'utilise une requête très longue pour détecter les mots offensants dans les noms d'utilisateur de mes utilisateurs.Trouver où et quel mot correspond sql déclaration LIKE

J'ai créé une page de modérateur où le modérateur peut cliquer sur un bouton à côté du nom d'utilisateur détecté et il remplacera le mot incriminé par *. Le problème est comment puis-je facilement détecter quel mot offensant et où le remplacer?

Je suppose que j'aurais besoin d'utiliser une regex de description qui fonctionne exactement comme l'instruction LIKE. L'aide à la création d'une telle regex serait grandement appropriée ou ... si quelqu'un a une meilleure solution.

TIA

Répondre

2

Quelque chose comme:

$bad_list = array('foo','barr','ax'); // list of bad words you want to * 

$from = array(); 
$to = array(); 

foreach($bad_list as $s){ 
    $from[] = '/'.preg_quote($s,'/').'/'; // PHP expects regex in delimiter. 
    $to[] = str_repeat('*',strlen($s)); 
} 
$str = "afoob"; 
$str = preg_replace($from,$to,$str); // $str is now a***b 

Vous pouvez également utiliser str_replace, il n'y a vraiment pas besoin de regex ici.

+0

Exemple clbuttique. – Wrikken

1

Vous pouvez ci-dessous fonctions en php

similar_text() 
levenshtein() 
soundex() 

Vous pouvez simplement créer un script simple pour correspondre à des mots, puis remplacer les mots selon vos besoins.

Vérifier la documentation http://in2.php.net/manual/en/function.similar-text.php