Comment les expressions régulières peuvent-elles être utilisées pour faire correspondre des mots-clés en dehors des balises d'ancrage HTML en PHP ?

Susan Sarandon
Libérer: 2024-10-20 13:33:03
original
665 Les gens l'ont consulté

How Can Regular Expressions Be Used to Match Keywords Outside HTML Anchor Tags in PHP?

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>
Copier après la connexion

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 :

  1. N'importe quel nombre de non-< caractères
  2. Une balise d'ancrage ouvrante qui ne se ferme pas automatiquement
  3. N'importe quel nombre de caractères non-< caractères
  4. Une balise d'ancrage de fermeture

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal