PHP で引用符で囲まれた単語を単一の単語として扱うexplode
以下に示すように、explode() を使用して文字列を分解するにはどうすればよいですか?引用されたテキストを単一の単語として保持しますか?
Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor
期待されています出力:
["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);
解決策:
引用された単語を単一の実体として正確に取得するには、次のことを活用できます。 preg_match_all():
$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor'; preg_match_all('/"(?:\\.|[^\\"])*"|\S+/', $text, $matches); print_r($matches);
この洗練された構文は、引用符で囲まれたフレーズ内のエスケープされた引用符も処理します。
正規表現の内訳:
"(?: # Start non-capture group 1 \ # Match backslash character . # Match any character except line breaks | # Or [^\"] # Match any character except backslash and double quotes )* # End non-capture group 1 and repeat it zero or more times " # Match double quotes | # Or \S+ # Match one or more non-whitespace characters
Double の代わりに「」を処理する引用符:
二重引用符の代わりに " を処理する必要がある場合は、次の調整された正規表現を使用します:
preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);
以上がPHPのexplode()を使用するときに引用符で囲まれたテキストを単一の単語として保存する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。