Sascha: Sonderzeichen in einer CSV-Datei

Hallo Forum!

Nachdem ich es geschafft habe meine CSV-Datei 'on the fly' zu generieren ;-)  habe ich ein weitres Problem. In meiner DB gibt es einige Attribute deren Inhalte ";", "," also auch Sonderzeichen enthalten.

Wie ich die CSV-Datei erzeuge ist hier abgebildet...

<schnipp>
while($row = mysql_fetch_row($result)) {

echo(""".$row[0]."";"".$row[1]."";"".$row[2].";"".$row[3]."";"".$row[4]."";"".$row[5]."";"".$row[6]."";"".$row[7]."";"".$row[8]."";"".$row[9]."";"".$row[10]."";"".$row[11]."";"".$row[12]."";"".$row[13]."";"".$row[14]."";"".$row[15]."";"".$row[16]."";"".$row[17]."";\n");
}
die;
</schnipp>

Als ergebnis kommt
<schnipp>
1039;"rzpc024";"Funky
1040;"rzpc025";"Meyer";</schnipp>

es soll aber kommen
1039;"rzpc024";"Funky, S."; .....

Wie oben zu sehen habe ich alles in """ gesetzt, aber nach einem "," wird dennoch die Zeile abgebrochen.

Was mache hier falsch? Habt Ihr ne Lösung?

Viele Grüße

Sascha :-)

visit: http://www.radiobot-online.de.vu
visit: http://www.projekt-online.de.ms
visit: http://www.sgo.net.ms

  1. Ich bins nochmal :-))

    Was mache hier falsch? Habt Ihr ne Lösung?

    Also die CSV-Datei wird doch korrekt erstellt! Allerdings habe ich mich von Excel beeinflussen lassen... Dieser meint nach dem "," eine eine Spalte anzufangen und alles da rein zuschreiben ...

    Bis Bald

    Sascha

    visit: http://www.radiobot-online.de.vu
    visit: http://www.projekt-online.de.ms
    visit: http://www.sgo.net.ms

  2. Hallo Sascha,

    Was mache hier falsch? Habt Ihr ne Lösung?

    Ich finde die gesamte Lösung nicht so glücklich. Warum lässt Du Dir nicht jede Reihe Deines Ergebnisses mit mysql_fetch_array() in ein Array schreiben und wandelst das mit implode() in einen String. Dabei kannst Du auch eine Konstante für das Trennzeichen Deiner Wahl definieren.
    CSV-Dateien dürfen AFAIK als Trennzeichen Komma, Semikolon oder das Pipe-Zeichen haben. Am Ende folgt dann ein \n für den Zeilenumbruch. Wenn Du es so machst sollte er alle Sonderzeichen innerhalb des Strings ingorieren und als Teil des Strings ausgeben. Ausnahme könnten Anführungszeichen sein, diese kannst Du mit einer passenden Funktion wie add_slashes, oder htmlspecialchars entsprechend maskieren.

    Gruss AndreD