PHP 正規表現でエスケープされた引用符を除外する
PHP で一重引用符または二重引用符で囲まれた部分文字列を抽出するには、エスケープ シーケンスに細心の注意を払う必要があります。一致した文字列内のエスケープされた引用符を無視するには、高度な正規表現を利用できます。
次のコードを考えてみましょう:
$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code); $code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);
これらの正規表現は引用符の間の部分文字列と一致しますが、エスケープされた引用符は除外できません。 。この問題に対処するために、より包括的な正規表現パターンを採用しています:
推奨正規表現:
二重引用符部分文字列:
"[^"\\]*(?:\\.[^"\\]*)*"/s
一重引用符で囲まれた部分文字列:
/'[^'\\]*(?:\\.[^'\\]*)*'/s
これらの正規表現では、エスケープ文字を含む、エスケープされていない文字 (「n」など)
説明:
これらの正規表現を組み込むことで、以下を含む部分文字列を正確に抽出できます。引用符で囲まれた文字列内のエスケープ文字。
以上がPHP でエスケープされた引用符を無視して引用符で囲まれた部分文字列を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。