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 ?
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>
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)(?=[^>]*(<|$))/
Répartition :
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>
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
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!