Bonjour,

sur un site web, j'ai mis en place un système de glossaire.

Sur chaque page affichée, je cherche à mettre en surbrillance les termes de ce glossaire, et ainsi afficher la définition en survolant ce terme.

Tout marche très bien sauf les exceptions...

La surbrillance se fait en insérant brutalement un lien qui appelle un tooltip au survol.

Problème:
Si le "terme" est déjà dans un lien.
Si le "terme" est dans une balise.

Actuellement j'utilise la regexp suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$pattern = "#" .$terme . " (?!</a>)(?![^<]+>)#si";
ça fonctionne très bien pour ne pas afficher de surbrillance dans les balises A.

J'aimerais pouvoir définir dans quelles balises j'autorise cette surbrillance.

---
Je viens d'essayer ceci:
$text = preg_replace($pattern, '<p$1>$2<a class="definition" rel="#definition_' . $i . '" href="#" >' . $terme . '</a>$3</p>', $text);

En gros, ne permettre cet ajout de surbrillance uniquement dans les balises p (tout en conservant les attributs de ces balises <p>).

Ça ne fonctionne pas non plus.

Avez vous une idée?