preg_split, RegEx-Problem

DoRiMaN

Erfahrenes Mitglied
Hallo!

Ich habe ein Problem mit einem Regulären Ausdruck für die Funktion preg_split().

Der Benutzer gibt in einem Formular verschiedene Parameter ein, durch ein Komma getrennt. Z.B.
Code:
abc,def,ghi,jkl,mnl,opq
Diese Parameter werden dann in PHP eingelesen, mit explode getrennt, und separat verarbeitet.

Nun möchte ich dem Benutzer die Möglichkeit geben, auch Kommas selbst in den Parameternamen zu verwenden. Leider ist die oben erwähnte Schreibweise vorgegeben, die darf ich nicht ändern, auch nicht durch Semikolon trennen lassen.

So bin ich auf die Funktion preg_split() gekommen. Ich kann damit leben, wenn der Benutzer die eigenen Kommas escapet, also \, schreibt wenn er ein Komma machen möchte. Dies dürfte nicht allzu oft vorkommen, also ist es nicht weiter schlimm.
Deshalb diese RegEx, damit nur bei einzelnen Kommas gesplittet wird:
PHP:
$arr = preg_split('/[^\\\],/', $data);

Dies Funktioniert auch, jedoch nicht ganz korrekt. Die Ausgabe:
Code:
Array (
[0] => abc 
[1] => de 
[2] => gh 
[3] => jkl\, mnl
)
Das eigene, escapte Komma wurde also nicht getrennt, was irchtig ist, jedoch fehlt bei jedem anderen Array-Element das letzte Zeichen, also f, i, etc...
Das ist im Nachhinein auch logisch, da ich das einte Zeichen VOR dem Komma ja auch trenne!

Ich weiss aber nicht, wie ich das jetzt so umgehen könnte, dass das ^\\\ nur als Prüfung beachtet wird, und dann nicht auch bei der Trennung verwendet wird.

Kann mir da jemand helfen?


Danke und Gruss
doriman
 
Das davor stehende Zeichen darf nicht als Teil des übereinstimmenden Textes und damit Teil der Trennsequenz behandelt werden. Probier mal Folgendes:
Code:
/(?<!\x5C),/
 
Zurück