Bonjour.
J'ai écris une fonction pour censurer des mots à partir d'un texte (en les remplaçant un nombre d'étoiles égale à la longueur du mot 'matché').
J'ai réussi à le faire d'une manière statique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function censure($texte) { $badwords = array("#sex#i", "#p(ro|or)n#i"); $replace = array("***", "****"); $texte = preg_replace($badwords, $replace, $texte); return $texte; }
Seulement j'aurais préférer trouver une manière dynamique, pour éventuellement interfacer cela avec une BDD.
Voici ce que j'ai tenté de faire :
Mais là il me remplace les 'badwords' par seulement deux étoiles. Je me dis alors qu'il n'interprète pas comme il faut le $1. Ceci est probablement dû à l'appel au deux fonction str_repeat() et strlen().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function censure($texte) { $badwords = array("#(sex)#i", "#(p(ro|or)n)#i"); for ($i = 0; $i < count($badwords); $i++) $texte = preg_replace($badwords[$i], str_repeat("*",strlen('$1')), $texte); return $texte; }
Voilà! Pour infos, j'ai réussi à coller mon prof d'info avec cette question >.<
Des idées? :)
Partager