phpbar.de logo

Mailinglisten-Archive

Re: [php] Problem mit CSV Export und Zeilenumbrüchen

Re: [php] Problem mit CSV Export und Zeilenumbrüchen

Ringo Großer swek at gmx.net
Fre Dez 16 16:11:40 CET 2005


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