Faire correspondre les caractères de nouvelle ligne avec le modificateur DOTALL Regex
Lorsque vous travaillez avec une chaîne contenant des caractères normaux, des espaces et des nouvelles lignes entourés de balises HTML div, le but est d'extraire le contenu entre
Pour surmonter ce problème, il faut utiliser le modificateur DOTALL (/s). Ce modificateur garantit que le caractère point (. dans l'expression régulière) correspond à tous les caractères, y compris les nouvelles lignes. En incorporant ce modificateur dans l'expression régulière, il devient possible de capturer avec précision le contenu dans les balises div :
'/<div>(.*)<\/div>/s'
Cependant, cette approche peut entraîner des correspondances gourmandes. Pour résoudre ce problème, il est recommandé d'utiliser une correspondance non gourmande :
'/<div>(.*?)<\/div>/s'
Vous pouvez également faire correspondre tout sauf < peut également être une solution s'il n'y a pas d'autres balises présentes :
'/<div>([^<]*)<\/div>/'
Il convient de noter que l'utilisation d'un caractère autre que / comme délimiteur d'expression régulière peut améliorer la lisibilité, éliminant ainsi le besoin d'échapper / dans div>. Voici un exemple utilisant # comme délimiteur :
'#<div>([^<]*)</div>#'
Bien que ces solutions puissent suffire pour des cas simples, il est crucial de reconnaître que le HTML est complexe et que l'analyse des expressions régulières à elle seule peut ne pas suffire. Pour garantir une analyse complète et fiable, il est conseillé d'envisager d'utiliser un analyseur HTML dédié.
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!