Bonjour,
depuis plusieurs jours je travail sur un moteur de recherche php mysql qui me souffle les mots lors de la frappe et qui me change la couleur des mots recherchés dans les resultats.
Malgrès pas mal de recherches sur le web je n'ai pas réussi à adapter les differents exemples que j'ai trouvé à mon script (je débute....)
La fonction qui permet ce changement de couleur est :
Code : Tout sélectionner
function highlight($resultat, $recherche)
{
$mots = explode(' ',$recherche);
foreach($mots as $mot)
{
if ($mot != "")
{
$resultat = preg_replace("/$mot/i", "<font color=\"yellow\"><b>\\0</b></font>", $resultat);
}
}
return $resultat;
}
exemple :
$recherche = "vive"
$resultat = "vive les expression régulières"
ça nous donne <font color=yellow><b>vive</b></font> les expressions régulières
jusque là tout fonctionne très bien.
Maintenant si l'on continu de taper dans la zone de recherche "vive l" nous allons utiliser deux fois de suite la fonction preg_replace (boucle foreach)
une fois pour "vive" et une deuxième fois pour "l" le problème est que la fonction preg_replace va trouver le "l" dans le mot yellow lors de la deuxième boucle et va modifier le contenu de ma balise.
Je voudrais donc juste savoir si il est possible d'utiliser une expression régulière avec la variable $mot de telle sorte que seul ce qui se trouve en dehors de <font ........</font> soit traité (dans l'exemple le mot "vive" etant déjà traité).
En vous remerciant pour votre aide.