ホームページ > バックエンド開発 > PHPチュートリアル > 引用句をそのままの状態で文字列を単語に分割するにはどうすればよいですか?

引用句をそのままの状態で文字列を単語に分割するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-12 16:20:09
オリジナル
804 人が閲覧しました

How Can I Split a String into Words While Keeping Quoted Phrases Intact?

引用符で囲まれたフレーズを保持しながら文字列を分割する

このタスクは、引用符で囲まれた独自の要件を使用して、指定された文字列を単語の配列に分解することです。フレーズは単一の単位として扱われます。

これを実現するには、正規表現のマッチングを利用するアプローチが 1 つあります。引用されたフレーズと個々の単語の両方をキャプチャするのに適したパターンは次のとおりです。

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

このパターンは、交互演算子 (|) で区切られた 2 つの部分で構成されます:

  1. "(?: \.|[^\"])*": 二重引用符 (") で囲まれた文字列と一致します。また、非キャプチャ グループ 1 を使用して、引用符で囲まれたテキスト内のエスケープされた引用符 () も考慮されます。
  2. S : これは、個々の単語を表す 1 つ以上の非空白文字と一致します。

このパターンを PHP で使用するには、preg_match_all(...):

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\.|[^\"])*"|\S+/', $text, $matches);
ログイン後にコピー

これにより、 $matches 配列には、キャプチャされたすべての一致の配列が含まれます。引用されたフレーズは単一の要素として分離されます。

たとえば、指定された入力文字列の場合:

Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor
ログイン後にコピー

preg_match_all( ...) は次のようになります:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )
)
ログイン後にコピー

以上が引用句をそのままの状態で文字列を単語に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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