引用符が埋め込まれた文字列の展開
標準の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 サイトの他の関連記事を参照してください。