Problème avec foreach et preg_replace ...

Zamokzy
Invité n'ayant pas de compte PHPfrance

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 :
$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 :)

Zamokzy
Invité n'ayant pas de compte PHPfrance

23 mars 2012, 05:59

$couple_array_uc correspond à "bonjour|coucou|salut|hello" mais dans un array, extrait grâce à explode au préalable pour un traitement n'ayant rien à voir avec cette portion, désolé pour l'erreure :)

Zamokzy
Invité n'ayant pas de compte PHPfrance

23 mars 2012, 13:59

Petit up avant que je devienne chauve :)
Il m'est possible d'offrir une récompense pour la solution si besoin est :)