Mots clés correspondants en dehors des balises d'ancrage HTML à l'aide d'expressions régulières en PHP
Un défi courant rencontré lors du traitement du contenu HTML est la nécessité d'effectuer des opérations spécifiques sur certains mots-clés du texte. Cependant, il est souvent nécessaire d'exclure les instances du mot-clé qui apparaissent dans des éléments HTML spécifiques, telles que les balises d'ancrage ().
Cette situation se présente lorsque vous souhaitez remplacer les occurrences du mot-clé par des liens vers un définition du dictionnaire, mais uniquement si le mot-clé n'est pas déjà enfermé dans une balise d'ancrage avec une URL cible spécifiée. Pour y parvenir, une expression régulière PHP doit être construite pour correspondre au mot-clé tout en excluant les modèles spécifiques dans les balises d'ancrage.
La solution réside dans l'utilisation d'une assertion anticipée négative pour appliquer cette exclusion. L'expression régulière suivante correspond et remplace efficacement les occurrences de mots-clés uniquement si elles n'apparaissent pas dans les balises d'ancrage :
<code class="php">$str = preg_replace('~Moses(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~i', '<a href="dictionary.php?k=keyword"></a>', $str);</code>
L'assertion d'anticipation négative, entourée de (?>...), garantit que le mot-clé est non précédé d'une balise d'ancrage ouvrante et suivi d'une balise d'ancrage fermante. L'anticipation négative évalue le reste de la chaîne sans consommer de caractères, permettant à la règle de correspondance principale de continuer après l'anticipation.
Dans ce cas spécifique, l'anticipation négative affirme que Moïse n'est pas immédiatement suivi de la séquence :
Si cette séquence est absente avant le mot-clé Moses, l'anticipation réussit, indiquant que le mot-clé n'est pas dans une balise d'ancrage. Cela permet à la règle de correspondance principale de remplacer le mot-clé par le format de lien souhaité.
Pour éviter les remplacements involontaires, il est crucial de tester minutieusement l'expression régulière par rapport à divers scénarios d'entrée pour garantir des résultats cohérents et précis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!