Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Zeichenfolge mit eingebetteten Anführungszeichen, einschließlich maskierter und prozentcodierter Anführungszeichen, auflösen?

Wie kann ich eine Zeichenfolge mit eingebetteten Anführungszeichen, einschließlich maskierter und prozentcodierter Anführungszeichen, auflösen?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 08:58:10404Durchsuche

How Can I Explode a String with Embedded Quotations, Including Escaped and Percent-Encoded Quotes?

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:

  • Anführungszeichenketten: In doppelte Anführungszeichen eingeschlossen, ermöglicht es die Verwendung von Escape-Anführungszeichen \.
  • Wörter ohne Anführungszeichen: Entspricht jeder Folge von Nicht-Leerzeichen.

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!

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