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
Mary-Kate Olsenoriginal
2024-11-29 13:01:10780parcourir

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