Maison >développement back-end >tutoriel php >Comment faire correspondre les caractères de nouvelle ligne dans les balises HTML à l'aide d'expressions régulières ?

Comment faire correspondre les caractères de nouvelle ligne dans les balises HTML à l'aide d'expressions régulières ?

DDD
DDDoriginal
2024-11-02 01:55:311004parcourir

How Do I Match Newline Characters within HTML Tags Using Regular Expressions?

Correspondance de caractères de nouvelle ligne avec des expressions régulières

Vous rencontrez un défi en essayant de faire correspondre des chaînes entre

et
balises, où les caractères de nouvelle ligne sont présents. L'expression régulière standard .* ne parvient pas à reconnaître ces caractères de nouvelle ligne.

Pour résoudre ce problème, utilisez le modificateur DOTALL (alias /s), qui permet au point (.) de correspondre à n'importe quel caractère, y compris les nouvelles lignes. Essayez l'expression suivante :

'/<div>(.*)<\/div>/s'

Cependant, notez que la correspondance gourmande peut ne pas donner le résultat souhaité. Pensez à utiliser une correspondance non gourmande :

'/<div>(.*?)<\/div>/s'

Vous pouvez également faire correspondre n'importe quoi sauf '<', à condition qu'aucune autre balise ne soit présente :

'/<div>([^<]*)<\/div>/s'

N'oubliez pas, l'utilisation d'un caractère autre que « / » comme délimiteur (par exemple, « # ») peut améliorer la lisibilité en éliminant le besoin d'échapper « / » dans les balises. Voici un exemple avec '#' :

'#<div>([^<]*)<\/div>'

Malgré ces options, il est important d'être conscient des limites des regex lorsqu'il s'agit de HTML complexe. Les divs imbriqués, les espaces supplémentaires et d'autres complexités peuvent rendre l'analyse des regex peu fiable. Pour une analyse plus précise, envisagez plutôt d'utiliser un analyseur HTML.

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:
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