ホームページ >バックエンド開発 >PHPチュートリアル >引用されたフレーズを保持しながら文字列を単語に分割するにはどうすればよいですか?

引用されたフレーズを保持しながら文字列を単語に分割するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 02:59:17981ブラウズ

How to Split a String into Words While Preserving Quoted Phrases?

引用されたテキストを保持し、単語ごとに文字列を分割する方法

指定された文字列「Lorem ipsum "dolor sit amet" consectetur "adipiscing elit」について" dolor" では、引用符の整合性を維持しながら、それを配列に分解する方法を探します。フレーズ。提供されたコード:

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);

を使用すると、個々の単語が分割されます。これに対処するために、正規表現を利用します。

$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
        )

)

説明:

正規表現は次のように分解できます。そのコンポーネント:

  • `" # 二重引用符文字と一致します("
  • (?: # 非キャプチャグループ 1 を開始します
  • # バックスラッシュ文字 ()
  • と一致します。 # 改行を除く任意の文字と一致します
  • | # OR
  • 1 # と "
  • )* を除く任意の文字と一致します。 # 非キャプチャ グループ 1 を終了し、それを 0 回以上繰り返します
  • " # 二重引用符文字と一致します ("
  • | # OR
  • S # 1 つ以上の非空白文字と一致します

  1. "

以上が引用されたフレーズを保持しながら文字列を単語に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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