ホームページ >バックエンド開発 >PHPチュートリアル >エスケープ引用符やパーセントエンコードされた引用符など、引用符が埋め込まれた文字列を分解するにはどうすればよいですか?

エスケープ引用符やパーセントエンコードされた引用符など、引用符が埋め込まれた文字列を分解するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 08:58:10406ブラウズ

How Can I Explode a String with Embedded Quotations, Including Escaped and Percent-Encoded Quotes?

引用符が埋め込まれた文字列の展開

標準のexplode()関数を使用して文字列を展開すると、引用符内のテキストを扱う場合に問題が発生する可能性があります。引用符で囲まれた単語を単一のエンティティとして扱うという望ましい結果を達成するには、より洗練されたアプローチが必要です。

正規表現の使用

正規表現は、このタスクに対する強力なソリューションを提供します。 。次の正規表現は、エスケープ引用符を許可して引用符で囲まれた文字列と一致します:

"(?:\.|[^\"])*"|\S+

このパターンを preg_match_all() とともに使用すると、文字列から引用符で囲まれた単語と引用符で囲まれていない単語の両方を抽出できます:

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\.|[^\"])*"|\S+/', $text, $matches);

結果の配列には目的のものが含まれます出力:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )
)

説明

正規表現パターンは 2 つの部分で構成されます:

  • 引用符で囲まれた文字列:二重引用符で囲むと、次を使用して引用符をエスケープできます。 \.
  • 引用符で囲まれていない単語: 一連の非空白文字と一致します。

非キャプチャ グループ (?:...) は、エスケープされた引用符は個別の一致としてキャプチャされないこと。

パーセント エンコードの処理引用符

文字列に二重引用符ではなくパーセントでエンコードされた引用符が含まれている場合は、正規表現を次のように変更します。

%22(?:\.|(?!%22).)*%22|\S+

以上がエスケープ引用符やパーセントエンコードされた引用符など、引用符が埋め込まれた文字列を分解するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。