Maison > développement back-end > tutoriel php > Comment utiliser Regex pour éviter de modifier le texte à l'intérieur des balises HTML lors du remplacement ?

Comment utiliser Regex pour éviter de modifier le texte à l'intérieur des balises HTML lors du remplacement ?

Barbara Streisand
Libérer: 2024-12-01 22:54:11
original
707 Les gens l'ont consulté

How to Use Regex to Avoid Modifying Text Inside HTML Tags During Replacement?

Regex pour faire correspondre en dehors des balises HTML pour le balisage sélectif

Pour empêcher les correspondances dans les balises HTML lors de l'utilisation de preg_replace pour ajouter des balises à des mots spécifiques dans une page HTML, il est crucial de définir une expression régulière qui exclut ces zones.

Original Modèle :

preg_replace("/(asf|gfd|oyws)/", '<span>
Copier après la connexion

Faiblesse :

Le modèle ci-dessus correspondra également aux instances des mots cibles dans les balises HTML, ce qui n'est pas souhaitable.

Amélioré Modèle :

/(asf|foo|barr)(?=[^>]*(<|$))/
Copier après la connexion

Répartition :

  • (asf|foo|barr) : Correspond aux mots cibles.
  • (?=): Assertion d'anticipation qui garantit que la correspondance se produit avant la balise HTML de fermeture (
  • 1* : Correspond à zéro ou plusieurs caractères (à l'exclusion de la balise HTML de fermeture

Comment ça Fonctionne :

Ce modèle correspond aux mots cibles uniquement s'ils ne sont pas immédiatement suivis du crochet angulaire HTML fermant. Il restreint efficacement la correspondance à l'extérieur des balises HTML, empêchant ainsi les modifications involontaires à l'intérieur de celles-ci.

Exemple :

Considérez le HTML suivant :

<p>I am making a preg_replace on HTML page. My pattern is aimed to add surrounding tag to some words in HTML. However, sometimes my regular expression modifies HTML tags. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>
Copier après la connexion

En utilisant le modèle amélioré, le mot cible "yasar" sera mis en correspondance et étiqueté, tandis que l'instance dans l'attribut "alt" de la balise d'ancrage sera laissée intact :

<p>I am making a preg_replace on HTML page. My pattern is aimed to add surrounding tag to some words in HTML. However, sometimes my regular expression modifies HTML tags. For example, when I try to replace this text:</p>

<pre class="brush:php;toolbar:false"><a href="example.com" alt="yasar home page">yasar</a>
So that yasar reads
Copier après la connexion

  1. >

    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.cn
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