Maison > développement back-end > tutoriel php > Comment remplacer en toute sécurité du texte en dehors des balises HTML à l'aide d'expressions régulières PHP ?

Comment remplacer en toute sécurité du texte en dehors des balises HTML à l'aide d'expressions régulières PHP ?

Linda Hamilton
Libérer: 2024-11-26 16:08:13
original
393 Les gens l'ont consulté

How to Safely Replace Text Outside HTML Tags Using PHP Regular Expressions?

Comment exclure les correspondances dans les balises HTML dans les expressions régulières PHP

Lorsque vous effectuez une recherche et un remplacement d'expression régulière sur un document HTML, il est essentiel pour garantir que le remplacement ne modifie pas par inadvertance les balises HTML. Pour relever ce défi, voici une solution utilisant une assertion anticipée dans les expressions régulières PHP :

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

Explication :

  • Regroupement de modèles : Le modèle contient trois termes de recherche possibles (asf, foo et barr) à l'intérieur parenthèses.
  • Assertion d'anticipation : L'assertion d'anticipation (?=[^>]*(<|$)) correspond à toute occurrence des termes de recherche suivis d'un nombre quelconque de non-> caractères (jusqu'à, mais à l'exclusion de a <) ou la fin de la ligne.

Par conséquent, cette expression régulière ignore les correspondances qui se produisent dans les balises HTML, empêchant ainsi les modifications indésirables du code HTML. structure. L'expression peut être utilisée dans preg_replace() pour cibler sélectivement le texte en dehors des balises HTML.

Par exemple, considérons le texte HTML suivant :

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

Utilisation de la fonction preg_replace() avec la fonction modèle fourni, vous pouvez remplacer les occurrences de yasar en dehors de la balise d'ancrage par une balise span personnalisée, ce qui donne :

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

Dans cet exemple, l'attribut alt dans la balise d'ancrage reste inchangé.

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!

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