Maison > développement back-end > tutoriel php > Comment puis-je faire correspondre efficacement les chaînes entre guillemets en PHP, en ignorant les guillemets échappés ?

Comment puis-je faire correspondre efficacement les chaînes entre guillemets en PHP, en ignorant les guillemets échappés ?

Mary-Kate Olsen
Libérer: 2024-11-29 13:01:10
original
881 Les gens l'ont consulté

How Can I Efficiently Match Quoted Strings in PHP, Ignoring Escaped Quotes?

PHP : faire correspondre les chaînes tout en ignorant les guillemets échappés dans les guillemets

Pour faire correspondre les chaînes placées entre guillemets simples (') et doubles (") , vous pouvez utiliser les expressions régulières suivantes :

<br>$code = preg_replace_callback( '/"(.*?)"/', array( &$this, '_getPHPString' ), $code );</p>
<p>$code = preg_replace_callback( "#'(.*?)' #", tableau( &$this, '_getPHPString' ), $code );<br>

Cependant, ces expressions ne tiennent pas compte des guillemets échappés dans les chaînes. Pour ignorer les guillemets échappés, vous pouvez utiliser des expressions régulières plus sophistiquées :

<.>Bien (Mais Inefficace):

<p>"(<br><sup>1<a href="https://www.php.cn/link/d58f36f7679f85784d8b010ff248f898" rel="nofollow" target="_blank"></a>|.)*"</sup>

Mieux (Plus efficace avec des Quantificateurs) :

<p>"(<br><sup>2<a href="https://www.php.cn/link/960fe54b16d890a75e845fcd23afc32d" rel="nofollow" target="_blank"></a> |.)*"</sup>

Meilleur (Le plus efficace avec déroulé Boucle):

<p><br><sup>3<a href="https://www.php.cn/link/84fec9a8e45846340fdf5c7c9f7ed66c" rel="nofollow" target="_blank"></a></sup>(?:.<em><sup>4<a href="https://www.php.cn/link/9b1cab1b93285ce58e7c1dc576ff8a14" rel="nofollow" target="_blank"></a></sup>)*</em>

Ces expressions améliorées seront permettre aux guillemets échappés (' et ") d'être ignorés dans leurs chaînes entre guillemets respectives. Pour la syntaxe PHP, utilisez ce qui suit :

<p>$re_dq = '/"<br><sup>5<a href="https://www.php.cn/link/b594f8f8fcc3cc7910e2dcd4269a2e95" rel="nofollow" target="_blank"></a></sup>(?:\.<em><sup>6<a href="https://www.php.cn/link/096ce33c96792e289516407eb29b62bb" rel="nofollow" target="_blank"></a></sup>)*"/s';</em> $re_sq = "/'<br><sup>7<a href="https://www.php.cn/link/57947ed4d4130c7ff0a057c8654dd1a3" rel="nofollow" target="_blank"></a></sup>(?:\.<em><sup>8<a href="https://www.php.cn/link/7835a9ef21ac8378a23835829594d598" rel="nofollow" target="_blank"></a></sup>)*'/s";</em> 

Ces expressions régulières fournissent une correspondance précise et efficace des chaînes, même lorsqu'il s'agit d'échappements citations.


  1. "
  2. "
  3. "\
  4. "\
  5. '\
  6. '\

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