Mailinglisten-Archive |
Hallo Peter, Peter Kraume wrote: > In zwei Feldern der DB sind jetzt Zeilenumbrüche vorhanden, die mir > die CSV Datei zerschießen. Ich habe versucht, die Umbrüche > umzuformatieren, leider erfolglos: > $feld = str_replace("\r\n", "\n", $feld); > oder > $feld = str_replace("\n", "\r\n", $feld); Zeilenumbrüche können ebenso valider inhaltlicher Bestandteil von CSV Dateien sein. Wie im CSV-Format spezifiziert dienen Zeilenumbrüche in erster Linie der Trennung von Datensätzen. Zellen innerhalb eines Datensatzes werden mit einem Delimiter der eigenen Wahl üblicherweise jedoch mit Semikolon getrennt. CSV Dateien ohne inhaltliche Zeilenumbrüche sind zugegebenermaßen besser mit einem Text-Editor lesbar und kompatibel zum Doppelklick für Excel, aber wenn du inhaltliche Zeilenumbrüche erhalten willst, dann musst du dich von dieser Bequemlichkeit lösen. Die Spezifikation von CSV sieht vor, dass Zellen welche selbst Zeilen- umbrüche oder Delimiter als Inhalte enthalten mit einem Enclosure üblicherweise doppelten Anführungszeichen am Anfang und am Ende des Zelleninhaltes eingeschlossen werden. Mit folgendem Beispiel kann http://de.php.net/manual/de/function.fgetcsv.php problemlos umgehen, wenn der 4. Parameter entsprechend verwendet wird. ----------------------------------- 100;Zeile1;Das ist Zeile 1;Test1 200;Zeile2;"Das ist Zeile 2 mit Zeilenumbruch";Test2 300Zeile3;Und hier Zeile3;Test3 ----------------------------------- Möchtest du die Zeilenumbrüche als solche nicht erhalten, aber die Information darüber, dann kannst du vielleicht auf die BB-Code Syntax [br] ausweichen oder dir ein beliebiges Zeichen oder eine Zeichenfolge ausdenken, welche in den anderen Inhalten nicht vorkommt. Dein Parser, der die Inhalte später auslesen soll muss dann entsprechend angepasst werden und diese maskierten Zeilenumbrüche wieder mit Replace in echte umwandeln. regards, Ringo
php::bar PHP Wiki - Listenarchive