Preg replace surligner des mots mais pas des balises

Preg replace surligner des mots mais pas des balises - PHP - Programmation

Marsh Posté le 22-03-2009 à 10:41:01    

Hello,
 
j'ai un  petit script de recherche dans un de mes sites que je souhaite améliorer. Actuellement, l'utilisateur entre son texte recherché puis voit des liens. Chaque lien retourné est du type {url_page}?highlight=mot-clé
 
Et dans la page, j'ai bien mes mots clés recherchés en surligné. Je le fais ainsi :
 

Code :
  1. $page_content = preg_replace("/($highlight)/i","<span class=\"highlight\">$1</span>",$page_content);


 
Mais voilà, le hic est ici :
$page_content contient le code HTML (juste un des conteneurs du body, puisque mon site utilise un template) et c'est sur TOUT ce code HTML de la variable qu'est effectuée la recherche.
Ce qui peut conduire à un résultat tel que (un exemple de source) :
 
Page "seule" (sans surlignage)

Code :
  1. <h2 id="sous-cat1">Exemple de sous catégorie</h2>


 
page appelée via le moteur de recherche avec surlignage du mot "sous" : {URL_PAGE}?highlight=sous
 

Code :
  1. <h2 id="<span class="highlight">sous</span>-cat1">Exemple de <span class="highlight">sous</span> catégorie</h2>


 
Alors effectivement mettre le span, sur le contenu du H2, très bien mais pas sur son ID...
 
Existe-t-il une solution ?
Merci pour vos éclaircissements.


Message édité par NewsletTux le 22-03-2009 à 10:41:16

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 22-03-2009 à 10:41:01   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed