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