Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Zeichenfolge mit eingebetteten Anführungszeichen, einschließlich maskierter und prozentcodierter Anführungszeichen, auflösen?
Strings mit eingebetteten Anführungszeichen auflösen
Das Auflösen einer Zeichenfolge mit der Standardfunktion „explosive()“ kann problematisch sein, wenn es um Text in Anführungszeichen geht. Um das gewünschte Ergebnis der Behandlung zitierter Wörter als einzelne Einheiten zu erzielen, ist ein ausgefeilterer Ansatz erforderlich.
Verwendung regulärer Ausdrücke
Reguläre Ausdrücke bieten eine leistungsstarke Lösung für diese Aufgabe . Der folgende reguläre Ausdruck gleicht Zeichenfolgen in Anführungszeichen ab und ermöglicht Anführungszeichen mit Escapezeichen:
"(?:\.|[^\"])*"|\S+
Dieses Muster kann mit preg_match_all() verwendet werden, um sowohl Wörter in Anführungszeichen als auch nicht in Anführungszeichen stehende Wörter aus der Zeichenfolge zu extrahieren:
$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor'; preg_match_all('/"(?:\.|[^\"])*"|\S+/', $text, $matches);
Das resultierende Array enthält das Gewünschte Ausgabe:
Array ( [0] => Array ( [0] => Lorem [1] => ipsum [2] => "dolor sit amet" [3] => consectetur [4] => "adipiscing \"elit" [5] => dolor ) )
Erklärung
Das Regex-Muster besteht aus zwei Teilen:
Die Nicht-Erfassungsgruppe (?:...) stellt sicher dass die maskierten Anführungszeichen nicht als separate Übereinstimmungen erfasst werden.
Prozentkodierte Handhabung Anführungszeichen
Wenn Ihre Zeichenfolge prozentcodierte Anführungszeichen anstelle von doppelten Anführungszeichen enthält, ändern Sie den regulären Ausdruck wie folgt:
%22(?:\.|(?!%22).)*%22|\S+
Das obige ist der detaillierte Inhalt vonWie kann ich eine Zeichenfolge mit eingebetteten Anführungszeichen, einschließlich maskierter und prozentcodierter Anführungszeichen, auflösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!