phpbar.de logo

Mailinglisten-Archive

[php] CSV intelligent splitten

[php] CSV intelligent splitten

Peter Bieling network at media-palette.de
Fre Feb 25 10:31:24 CET 2005


Hallo,

mal ein eigentlich triviales Problem, zu dem mir zwar viele Lösungen 
einfallen, aber eigentlich nicht die ideale. Vielleicht könnt ihr helfen.

Ich habe eine CSV-Datei mit ; Semiklon als Trennzeichen. Diese will ich 
splitten, weil die Werte alle gecheckt werden. Kein Problem mit explode.

Nun kann es vorkommen, dass einige Felder weiterer Semikolons enthalten:
1;normaler Text;noch etwas
2;"anderer Text;mit internem Semikolon";noch etwas

Mit preg_replace_callback kann ich jetzt die internen Semikolons in 
etwas anderes verwandeln, - aber in was? Die Werte werten später in eine 
Mysql-Tabelle geschrieben, aber vorher noch mal als gereinigte CSV-Datei 
geschrieben, die dann direkt mit LOAD DATA INFILE geschrieben werden.

Als beste Lösung sehe ich im Moment, die internen ; als \; zu maskieren. 
Und dann nur an den unmasierten ; zu splitten. Aber hier bekomme ich 
unerwartet Probleme:
  $zellen = preg_split ('|(?!\\)\;|', $reihe);
Oder kann PHP keinen negativen Look Ahead? Oder wo habe ich mich vertan?
Compilation failed: missing ) at offset 7 .

Kann mir jemand sagen, ob das überhaupt mit preg_split funktioniert?
Habt ihr bessere Lösungsvorschläge für das Gesamtproblem?

Viele Grüße

Peter

php::bar PHP Wiki   -   Listenarchive