Mailinglisten-Archive |
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