Heim >Backend-Entwicklung >PHP-Tutorial >Wie bleibt zitierter Text als einzelne Wörter erhalten, wenn PHPs explosion() verwendet wird?

Wie bleibt zitierter Text als einzelne Wörter erhalten, wenn PHPs explosion() verwendet wird?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 13:01:12487Durchsuche

How to Preserve Quoted Text as Single Words When Using PHP's explode()?

Behandeln von zitierten Wörtern als einzelne Wörter in PHP explodieren

Wie können wir eine Zeichenfolge, wie unten gezeigt, mit explosion() while zerlegen? Zitierten Text als einzelne Wörter beibehalten?

Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor

Erwartet Ausgabe:

["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]

Trotz Versuchen mit dem folgenden Code segmentiert die aktuelle Implementierung jedes Wort in der Zeichenfolge:

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

Lösung:

Um zitierte Wörter als einzelne Einheiten genau zu erfassen, können wir sie nutzen preg_match_all():

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

Diese verfeinerte Syntax verarbeitet sogar maskierte Anführungszeichen in Anführungszeichen.

Aufschlüsselung von Regex:

"(?:         # 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

Umgang mit „ statt doppelter Anführungszeichen:

Sollte Wenn Sie sich mit „ anstelle von doppelten Anführungszeichen befassen müssen, verwenden Sie diesen angepassten regulären Ausdruck:

preg_match_all('/%22(?:\\.|(?!%22).)*%22|\S+/', $text, $matches);

Das obige ist der detaillierte Inhalt vonWie bleibt zitierter Text als einzelne Wörter erhalten, wenn PHPs explosion() verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn