PHP: 引用符内のエスケープ引用符を無視して文字列を照合する
一重引用符 (') と二重引用符 (") の両方で囲まれた文字列を照合するには、次の通常のコマンドを使用できます式:
<br>$code = preg_replace_callback( '/"(.*?)"/', array( &$this, '_getPHPString' ), $code );</p> <p>$code = preg_replace_callback( "#'(.*?)'#", array( &$this, '_getPHPString' ), $code );<br>
ただし、これらの式では文字列内のエスケープされた引用符は考慮されません。エスケープされた引用符を無視するには、次のようにします。より洗練された正規表現:
Good (ただし非効率):
<br>"(<sup><a href="//m.sbmmt.com/link/d58f36f7679f85784d8b010ff248f898" rel="nofollow" target="_blank">1</a></sup>|.)*"<br>
より良い (特別な機能を使用するとより効率的)量子):
<br>"(<sup><a href="//m.sbmmt.com/link/960fe54b16d890a75e845fcd23afc32d" rel="nofollow" target="_blank">2</a></sup> |.)*"<br>
最高 (展開された状態で最も効率的)ループ):
これら改良された式により、それぞれの引用符で囲まれた文字列内でエスケープされた引用符 (' と ") を無視できるようになります。 PHP 構文の場合は、次を使用します:
<br>$re_dq = '/"<sup><a href="//m.sbmmt.com/link/b594f8f8fcc3cc7910e2dcd4269a2e95" rel="nofollow" target="_blank">5</a></sup><em>(?:\.<sup><a href="//m.sbmmt.com/link/096ce33c96792e289516407eb29b62bb" rel="nofollow" target="_blank">6</a></sup></em>)*"/s';<br> $re_sq = "/'<sup><a href="//m.sbmmt.com/link/57947ed4d4130c7ff0a057c8654dd1a3" rel="nofollow" target="_blank">7</a></sup><em>(?:\.<sup><a href="//m.sbmmt.com/link/7835a9ef21ac8378a23835829594d598" rel="nofollow" target="_blank">8</a></sup></em>)*'/s";<br>
これらの正規表現は、次のような場合でも、文字列の正確かつ効率的なマッチングを提供します。エスケープされた引用符を処理します。
以上がエスケープされた引用符を無視して、PHP で引用符で囲まれた文字列を効率的に照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。