Hello,
Versuch doch z.B. mal, in einer CSV-Datei eine Textarea mit Umbrüchen abzulegen oder ei Feld mit einem Komma drin oder eben dem Trennzeichen abzulegen. Da muss ziemlich viel rumstressen.
PHP hält von vornherein eine Funktion zum Parsen von CSV-Dateien bereit (fgetcsv). Das Gegenstück (fputcsv) findet sich in den User-Kommentaren etwas weiter unten. Somit sollten auch Zeilenumbrüche kein Problem mehr sein ... auch wenn natürlich dann die Datei nicht mehr so sauber aussieht. Alternativ könnte man die "kritischen" Felder auch durch base64_encode() jagen, dann wäre die Sache mit den Zeilenumbrüchen sowieso gegessen.
Was erzählst Du da? In Textdateien, und CSV gehört zur dieser Klasse, werden Datensätze (also Zeilen) bestimmungsgemäß durch ein _Zeilenendezeichen_ abgeschlossen. Zeilenendezeichen nennt man trivial auch Zeilenumbruch. Wenn nun innerhalb des Datenstromes eines Datensatzes ein solches Zeichen enthalten ist, dann ist aus Sicht der Datei der Datensatz einer Textdatei an dieser Stelle zu Ende. Aus eins mach also zwei oder drei...
Das gleiche gilt analog für Feldtrennzeichen. Auch die dürfen im Datenfeld nicht enthalten sein. Es gibt dann zwar die "ich dreh mich im Kresi Technik", sprich "Escape-Zeichen", aber dann dürfen die wieder nicht einfach so im Stream vorkommen. Man muss den Stream also sowieso bereinigen.
Dann kann man auch die extrem leistungsstarken Array-Funktionen von PHP benutzen und hat alle Probleme auf einmal gelöst. Wenn Dir das nicht gefällt, kannst Du ja weiterhin CSV benutzen mit allen beschriebenen Problemen.
Da das in diesem Thread aber schon genug beschrieben wurde, wie man es "normal" löst, habe ich beschrieben, wie man es intelligent löst. *!*
Nö. Aber ich finde es trotzdem praktisch, wenn die Daten von vorneherein in einem Format verwaltet werden, das anderen Applikationen den Zugriff darauf erlaubt, selbst wenn diese Applikation "Mensch" heißt. Vor allem dann, wenn sich keine signifikanten Performance- oder Größenunterschiede ergeben.
Ich habe noch mehrere Kisten mit Karteikarten. Die sind ca. 20 Jahre alt. Die Daten darauf sind noch zu ca. 70 Prozent brauchbar für mich. Ich kann sie noch lesen, auch bei Kerzenschein und ohne Strom. Solche "Dateien" finde ich ich klasse.
Ach, bevor Du mir hier nochmal antwortest, schlag doch lieber den MySQL-Leuten mal vor, ihre Datenbank auf CSV auf Karteikarten umzustellen, damit man sie ggf. auch mit der Lupe lesen kann. *grummel*
Liebe Grüße aus http://www.braunschweig.de
Tom
[ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen