ホームページ > バックエンド開発 > PHPチュートリアル > PHP でエスケープされた引用符を無視して引用符で囲まれた部分文字列を抽出するにはどうすればよいですか?

PHP でエスケープされた引用符を無視して引用符で囲まれた部分文字列を抽出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-29 12:54:17
オリジナル
761 人が閲覧しました

How Can I Extract Quoted Substrings in PHP, Ignoring Escaped Quotes?

PHP 正規表現でエスケープされた引用符を除外する

PHP で一重引用符または二重引用符で囲まれた部分文字列を抽出するには、エスケープ シーケンスに細心の注意を払う必要があります。一致した文字列内のエスケープされた引用符を無視するには、高度な正規表現を利用できます。

次のコードを考えてみましょう:

$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code);
$code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);
ログイン後にコピー

これらの正規表現は引用符の間の部分文字列と一致しますが、エスケープされた引用符は除外できません。 。この問題に対処するために、より包括的な正規表現パターンを採用しています:

推奨正規表現:

  • 二重引用符部分文字列:

    "[^"\\]*(?:\\.[^"\\]*)*"/s
    ログイン後にコピー
  • 一重引用符で囲まれた部分文字列:

    /'[^'\\]*(?:\\.[^'\\]*)*'/s
    ログイン後にコピー

これらの正規表現では、エスケープ文字を含む、エスケープされていない文字 (「n」など)

説明:

  • [^"\\]* は 0 個以上と一致します。引用符またはバックスラッシュ以外の文字。
  • (?:\\.[^"\\]*)* は、その後に続く任意の数のエスケープ文字と一致します。引用符またはバックスラッシュ以外の文字。
  • s 修飾子により、複数行にまたがる場合に必要な単一行のマッチングが可能になります。

これらの正規表現を組み込むことで、以下を含む部分文字列を正確に抽出できます。引用符で囲まれた文字列内のエスケープ文字。

以上がPHP でエスケープされた引用符を無視して引用符で囲まれた部分文字列を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート