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
Freigeben: 2024-12-07 13:01:12
Original
432 Leute haben es durchsucht

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
Nach dem Login kopieren

Erwartet Ausgabe:

["Lorem", "ipsum", "dolor sit amet", "consectetur", "adipiscing elit", "dolor"]
Nach dem Login kopieren

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage