2016-08-11 1 views
0

Erstens weiß ich, dass ich das gleiche Ergebnis erhalten kann mit explodieren, will nur wissen, warum es nicht in PHP arbeitetWarum funktioniert diese RegEx nicht in PHP?

preg_split('/(.+,)+(.+)/im', 'New York, NY, United States'); 

Es gibt

array (
    0 => '', 
    1 => '', 
) 

Warum? Es sollte zurückgeben: ['New York, NY, ', 'United States'] richtig?

Antwort

1

Mit preg_split Sie machen können: preg_split("/,\s/", 'New York, NY, United States');

dieser Funktion wird das Muster muss von das Trennzeichen.

+0

Dieses dh durch OP gegeben das Array nicht gibt. "New York, New York, USA", die nur zwei Elemente haben. – Toto

+0

Mit preg_split gibt der Parameter 'limit', der auf den Standardwert '-1' gesetzt ist, alle 3 Ergebnisse für das Array zurück. – Benito103e

+0

In der OP-Frage ist das Array TWO Element lang, das erste ist "New York, NY", das zweite ist "United States" – Toto

1

Sie sind für ein Spiel tatsächlich zu tun, was Sie wollen, nicht auf das, was Sie teilen verwenden möchten:

preg_match('/(.*,)+ (.*)/', $subject, $result); 

die Spiele in $result

Note bekommen würde: Ich habe hinzugefügt ein Leerzeichen und entfernt die Multi-Line-Modifikatoren, sind in Ihrem Fall nicht erforderlich.

Wenn Sie Preg Split verwenden möchten, müssen Sie eine negative Vorschau verwenden, um die letzte , zu bekommen:

preg_split('/(,)(?!.*,)/i', 'New York, NY, United States'); 
0

Um das Array zu erhalten: ['New York, NY, ', 'United States'], die zweite quantifier entfernen und verwenden preg_match statt:

preg_match('/^(.+,)(.+?)$/im', 'New York, NY, United States', $match); 
Verwandte Themen