Maison > développement back-end > tutoriel php > Comment puis-je utiliser PHP Regex pour éviter de modifier les balises HTML lors du remplacement de texte ?

Comment puis-je utiliser PHP Regex pour éviter de modifier les balises HTML lors du remplacement de texte ?

Barbara Streisand
Libérer: 2024-12-04 09:41:10
original
527 Les gens l'ont consulté

How Can I Use PHP Regex to Avoid Modifying HTML Tags During Text Replacement?

PHP Regex pour exclure les correspondances dans les balises HTML

Lorsque vous effectuez des remplacements de texte à l'aide de preg_replace dans des documents HTML, il est essentiel d'éviter de modifier les balises HTML par inadvertance. Par exemple, considérons la tâche consistant à envelopper certains mots dans tags :

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

L'expression régulière suivante tente de remplacer "yasar" par tags :

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

Malheureusement, cette expression régulière correspond également à "yasar" dans l'attribut alt d'une balise d'ancrage, ce qui entraîne des modifications indésirables.

Utilisation d'assertions pour exclure les correspondances dans les balises

Pour éviter de telles correspondances indésirables, une assertion peut être utilisée. En affirmant que le mot recherché (c'est-à-dire "asf", "gfd" ou "oyws") n'apparaît pas avant un "<" ou après un ">", nous pouvons effectivement exclure les correspondances dans les balises HTML. Voici une expression régulière modifiée qui utilise cette approche :

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

L'assertion d'anticipation (?=[^>]*(<|$)) garantit que le mot doit être suivi soit d'un ouvre-balise HTML ("<") ou la fin de la chaîne (représentée par "$"). Cela exclut effectivement les correspondances dans les balises.

En incorporant cette assertion dans l'expression régulière, nous pouvons effectuer des remplacements sans modifier les balises HTML, garantissant ainsi que yasar dans l'attribut alt reste intact :

<a href="example.com" alt="yasar home page">yasar</a>
Copier après la connexion

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