ホームページ > バックエンド開発 > PHPチュートリアル > 引用符で囲まれた文字列内のエスケープされた引用符を無視する PHP 正規表現を作成するにはどうすればよいですか?

引用符で囲まれた文字列内のエスケープされた引用符を無視する PHP 正規表現を作成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-28 00:48:12
オリジナル
242 人が閲覧しました

How to Write a PHP Regular Expression to Ignore Escaped Quotes Within Quoted Strings?

PHP: 引用符内のエスケープされた引用符を無視する正規表現

このシナリオでは、次のように囲まれた文字列を抽出する既存の正規表現を変更することを目的としています。一重引用符 (') または二重引用符 (") を使用すると、それらの引用符内のエスケープされた引用符が無視されます。目的は、一重引用符の間のデータを許可することです。エスケープされた一重引用符 (') と二重引用符の間のデータを無視し、エスケープされた二重引用符 (") を無視します。

解決策:

これを実現するには、次を利用できます。効率のために最適化された正規表現:

二重引用符文字列:

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

単一引用符で囲まれた文字列:

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

説明:

これらの正規式は以下で構成されますコンポーネント:

  • 1*: 二重引用符 (") またはバックスラッシュ以外の任意の文字と一致します().
  • (?:\.2): エスケープされた文字 (その後に続く文字) と一致します。引用符、バックスラッシュ以外の文字)。
  • 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);
ログイン後にコピー

このコードは、内部のエスケープされた引用符を無視して、引用符で囲まれた文字列を正しく抽出するようになりました。


  1. "\
  2. "\

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

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