Je cherche une manière efficace de supprimer très rapidement dans une chaîne de caractères une liste de mots. J'ai pensé le faire avec strtr mais, alors, il ne remplace pas des mots mais des caractères. J'ai pensé aussi passer par des tableaux en explosant ma chaine via explode puis en calculant la différence via array_diff puis ensuite en recomposant une chaine via implode. Vous en pensez quoi ? Avez-vous une meilleure idée ? Merci d'avance.
ereg_replace (le_mot_que_tu_recherche, ce_que_tu_veux_mettre_en_remplacement(donc ici tu mets ""), ta_chaine_de_caractere) plus d'info : -http://www.nexen.net/docs/php/annotee/function.ereg-replace.php
str_replace peut prendre un tableau en entrée/sortie, donc tu peux faire : $asupprimer = Array("mot1","mot2","mot3"); $chaine = str_replace($asupprimer,"",$chaine);
Gna ? Dans la doc il y a un exemple : // Provides: You should eat pizza, beer, and ice cream every day $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase); Cet exemple marche bien chez moi (et j'utilise str_replace pour remplacer des mots/chaines dans plusieurs scripts sans soucis).
Et preg_replace peut prendre des tableaux. Par contre, je ne capte pas, mon code de donne rien, dès que je rajoute les \b ... Code: $temp = $from; $n = count ($arwords); for ($i=0; $i<$n; $i++) $temp = ereg_replace ("/\b".$arwords[$i]."\b/i", "", $temp); $to = $temp;
Je n'ai pas dit que ça ne marche pas. Ce que je dis, c'est que si tu lui mets "ice", par exemple, il va t'amputer "iceberg". Je veux une fonction qui permette de ne supprimer que des mots entiers.
Merci. En fait, preg_replace, qui est repris sur la page de ereg_replace me convient mieux. Par contre, j'ai toujours un problème avec cette @?#& d'expression régulière ;-) !
Arf, ça y est, ça marche avec preg_replace : Code: $n = count ($arwords); for ($i=0; $i<$n; $i++) $arwords1[$i] = "/\b".$arwords[$i]."\b/i"; $arwords2 = array_fill(0, $n, ""); $to = preg_replace($arwords1, $arwords2, $from); echo "<p> LEN preg_replace : ".strlen($to)."</p>"; echo "<p>$to</p>"; Yapluka nettoyer le code. Merci à tous pour l'aide.