PHP: 引用符内のエスケープされた引用符を無視する正規表現
このシナリオでは、次のように囲まれた文字列を抽出する既存の正規表現を変更することを目的としています。一重引用符 (') または二重引用符 (") を使用すると、それらの引用符内のエスケープされた引用符が無視されます。目的は、一重引用符の間のデータを許可することです。エスケープされた一重引用符 (') と二重引用符の間のデータを無視し、エスケープされた二重引用符 (") を無視します。
解決策:
これを実現するには、次を利用できます。効率のために最適化された正規表現:
二重引用符文字列:
"[^"\\]*(?:\\.[^"\\]*)*"/s
単一引用符で囲まれた文字列:
/'[^'\\]*(?:\\.[^'\\]*)*'/s
説明:
これらの正規式は以下で構成されますコンポーネント:
これらのパターンを組み合わせることで、正規表現はエスケープされた引用符を無視しながら引用符で囲まれた文字列を効果的にキャプチャします。
PHP コードの例:
$re_dq = '/"[^"\\]*(?:\\.[^"\\]*)*"/s'; $re_sq = "/'[^'\\]*(?:\\.[^'\\]*)*'/s"; $code = preg_replace_callback($re_dq, array($this, '_getPHPString'), $code); $code = preg_replace_callback($re_sq, array($this, '_getPHPString'), $code);
このコードは、内部のエスケープされた引用符を無視して、引用符で囲まれた文字列を正しく抽出するようになりました。
以上が引用符で囲まれた文字列内のエスケープされた引用符を無視する PHP 正規表現を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。