[RegExp] Faire une censure...

Signaler
Messages postés
51
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
3 août 2007
-
Messages postés
51
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
3 août 2007
-
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

Messages postés
51
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
3 août 2007

J'oubliais : Bonjour tout le monde, et merci de jetter un oeil sur mon topic
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

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

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
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
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 :


Messages postés
51
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
3 août 2007

Non, j'ai inclus dans la classe de caractères les []=#/... et donc oui il y a bien une règle...