Heim >Backend-Entwicklung >PHP-Tutorial >Wie teile ich eine Zeichenfolge in Wörter auf und behalte dabei zitierte Phrasen bei?

Wie teile ich eine Zeichenfolge in Wörter auf und behalte dabei zitierte Phrasen bei?

Susan Sarandon
Susan SarandonOriginal
2024-12-06 02:59:17981Durchsuche

How to Split a String into Words While Preserving Quoted Phrases?

So teilen Sie Zeichenfolgen nach Wörtern auf und bewahren zitierten Text

Für die angegebene Zeichenfolge „Lorem ipsum „dolor sit amet“ consectetur „adipiscing elit „dolor“ suchen wir nach einer Methode, um es in ein Array zu zerlegen und dabei die Integrität der zitierten Phrasen zu wahren. Die Verwendung des bereitgestellten Codes:

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

führt dazu, dass einzelne Wörter aufgeteilt werden. Um dieses Problem zu lösen, nutzen wir reguläre Ausdrücke:

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

Dieser reguläre Ausdruck stimmt entweder mit Zeichenfolgen in Anführungszeichen oder mit Nicht-Leerzeichen überein. In Anführungszeichen gesetzte Zeichenfolgen können doppelte Anführungszeichen mit Escapezeichen (") enthalten, und die Technik berücksichtigt dies. Das Ergebnis:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )

)

Erklärung:

Der reguläre Ausdruck kann unterteilt werden in seine Komponenten:

  • `" # Entspricht dem doppelten Anführungszeichen ("
  • (?: # Start Nicht erfassende Gruppe 1
  • # Entspricht dem Backslash-Zeichen ()
  • # Entspricht jedem Zeichen außer Zeilenumbrüchen
  • |
  • 1
  • # Entspricht jedem Zeichen außer und „)* # Beende die nicht einfangende Gruppe 1 und wiederhole sie null oder mehrere Male
  • " # Entspricht dem doppelten Anführungszeichen ("
  • | # ODER
  • S # Entspricht einem oder mehreren Nicht-Leerzeichen
"

Das obige ist der detaillierte Inhalt vonWie teile ich eine Zeichenfolge in Wörter auf und behalte dabei zitierte Phrasen bei?. 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