Problème avec foreach et preg_replace ...
Posté : 23 mars 2012, 05:56
Bonjour à tous,
Voila maintenant un bon moment que je m'arrache les cheveux sur un problème et je n'ai de cesse de tout essayer mais rien n'y fait !
J'ai un fichier .txt contenant des lignes de synonymes, par exemple : bonjour|coucou|salut|hello
Puis un script censé remplacer les mots correspondants d'une chaîne par un de ses synonymes. Jusqu'ici tout vas bien, le fichier est bien lu mais un soucis intervient quand plusieurs mots de cette liste apparaissent dans la même chaîne !
Exemple : "coucou à vous et salut aux autres !"
Le mot "coucou" et "salut" seront biens remplacés, mais tous les deux par le même mot !
Voici la partie du code qui pose problème :
Il est évident que pour mon exemple il y a peu de chances que le mot bonjour et coucou ressortent 20 fois dans la chaîne mais le but est de remplacer certains mots biens précis par d'autres mais qui peuvent êtres variables.
J'ai essayé de bidouiller avec array_rand() mais peut être mis suis-je mal pris :/
Par avance merci d'avoir pris le temps de me lire pour éventuellement m'éclairer.
A bientôt
Voila maintenant un bon moment que je m'arrache les cheveux sur un problème et je n'ai de cesse de tout essayer mais rien n'y fait !
J'ai un fichier .txt contenant des lignes de synonymes, par exemple : bonjour|coucou|salut|hello
Puis un script censé remplacer les mots correspondants d'une chaîne par un de ses synonymes. Jusqu'ici tout vas bien, le fichier est bien lu mais un soucis intervient quand plusieurs mots de cette liste apparaissent dans la même chaîne !
Exemple : "coucou à vous et salut aux autres !"
Le mot "coucou" et "salut" seront biens remplacés, mais tous les deux par le même mot !
Voici la partie du code qui pose problème :
$couple_uc = implode('|', $couple_array_uc);
foreach ($couple_array_uc as $mot_uc)
{
$this->text = preg_replace('/ '.$mot_uc.'([ ,\.+]{1})/', ' {'.utf8_encode($couple_uc).'}$1', $this->text);
}
$couple_array_uc correspond à "bonjour|coucou|salut|hello".Il est évident que pour mon exemple il y a peu de chances que le mot bonjour et coucou ressortent 20 fois dans la chaîne mais le but est de remplacer certains mots biens précis par d'autres mais qui peuvent êtres variables.
J'ai essayé de bidouiller avec array_rand() mais peut être mis suis-je mal pris :/
Par avance merci d'avoir pris le temps de me lire pour éventuellement m'éclairer.
A bientôt