[RegExp] Faire une censure...

NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007 - 25 nov. 2005 à 10:39
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007 - 25 nov. 2005 à 12:43
Je sais, il existe déjà des scripts ici qui le font. Je sais, on ne
peut pas sortir une censure qui marchera dans tous les cas. Je sais, je
suis embêtant, mais j'aime bien tout faire moi même :)

Donc, dans le cadre de la création d'un système de commentaires, et
pour éviter un abus des visiteurs, je me penche sur une regexp pour
filtrer les mots contenus dans une archive et les remplacer par
*censuré*. J'étais arrivé à une formule marchant assez bien, mais
l'ajout d'un bbCode dans le texte bloque la censure, et je ne comprends
pas vraiment ou ca bloque...

function bad_words_rpl($string)

{

$buff = fopen("../includes/censure.txt", "r");

$data = fread($buff, filesize("../includes/censure.txt"));

fclose($buff);

$parse_buff = explode(",", $data);

for ($i = 0 ; $i < count($parse_buff); $i++)

$parse_buff[$i] = '![^a-zA-Z0-9/=#\[\]]*' . $parse_buff[$i] . '[^a-zA-Z0-9/#\[\]/ ]*$!i';

$explo = explode(' ', $string);

$explo = preg_replace($parse_buff, '*censuré*', $explo);

$string = implode(' ', $explo);

return $string;

}

Donc, si on met juste par exemple "bouh", et
que ce mot est dans la liste, il sera bien censuré. Si on met "bouh
bouh", les deux seront censurés. Mais si je met le bbCode, ca saute...
Exemple : "Bouh"

5 réponses

NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
25 nov. 2005 à 10:40
J'oubliais : Bonjour tout le monde, et merci de jetter un oeil sur mon topic
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 nov. 2005 à 11:10
Hello,

pourquoi tu ne fais pas ça avec des str_replace plutôt...? je ne vois pas l'utilité des regexp pour ça.
0
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
25 nov. 2005 à 11:58
Mot censuré : cul

Mot proposé : particule

Résultat : parti*censuré*e



Moralité : j'aime pas trop les str_replace... ou alors si on peut régler ca, je suis preneur
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 nov. 2005 à 12:16
ben...

$censureTab = array (' cul ', ' connerie ', 'cul.'...);

$chaine = str_replace ($censureTab, $censureChaine, $chaine);

je veux dire par là que dans ton expreg (que je n'ai pas regardée), tu
as bien une règle ? par exemple, le mot censuré doit être précédé par
un blanc et suivi par un blanc, ou un point, virgule, etc.



Tu peux très bien appliquer des règles simples.

Mais bon, c'est contraignant c'est vrai.



Pour ton bbcode...ben tu as apparemment oublié les crochets (à mon avis
tu as aussi oublié la ponctuation). Ta regex me semble trop compliqué
pour ce que tu as à faire.

Pas le temps de la refaire là désolé.

Mais un bon site :


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NaeiKinDus Messages postés 51 Date d'inscription mercredi 12 octobre 2005 Statut Membre Dernière intervention 3 août 2007
25 nov. 2005 à 12:43
Non, j'ai inclus dans la classe de caractères les []=#/... et donc oui il y a bien une règle...
0
Rejoignez-nous