fputcsv Problem mit Trennzeichen

guenter024

Erfahrenes Mitglied
Hallo PHP-Freunde,

Versuche an Hand des Beispiels von PHP.net mit fputcsv() eine csv-Datei zu erzeugen und in diese zu schreiben.

Zum Beispiel

PHP:
$list = array ("$text1,$text2,$text3");  # die Arrayinhalte kommen aus der Datenbank

$fp = fopen('file.csv', 'w+');

foreach ($list as $line) {
    fputcsv($fp, split(',', $line),';');
}

fclose($fp);

Problem: in den Textinhalten befinden sich auch Kommas, welche durch die Funktion split() ebenfalls als Feldtrenner eingestuft werden.
Wie könnte ich dieses Problem umgehen?

Danke für Eure Hilfe.

LG
Günter



EDIT: wenn ich die Kommas mit str_replace() entferne geht es natürlich, das ist aber nicht so zufriedenstellend.
 
Ich sehe auf die Schnelle 2 Möglichkeiten,

1. Änder das Split-Zeichen auf ein Semikolon
2. Änder die Kommas im Text auf ein Semikolon
 
Hallo guenter024,
kannst Du mal den Code zeigen, mit welchem Du die Werte aus der Datenbank liest? Ich nehme an, dass die Werte aus der Datenbank nicht in einer zusammenhängenden Zeichenkette geladen werden, sondern dass diese als einzelne Werte in einem Array sind. Wenn dies der Fall ist, muss bei der Funktion fputcsv die Zeichenkette nicht mehr gesplitted werden, sondern Du kannst einfach den kompletten Array übergeben.

Zur Erläuterung:
PHP:
$list = array ($text1, $text2, $text3); # Einzelne Werte aus der Datenbank
fputcsv($fp, $list);

Viele Grüße
 
@CookieBuster
Komma entfernen ist auch nicht so optimal, da auch auch Zahlen mit Komma getrennt enthalten sind. Da müsste ich erst das Komma durch eine Zeichenkette ersetzen und dann wieder umwandeln.
Aber das splitten kann ein anderes Zeichen sein. Habe nun das Semikolon genommen wie du empfohlen hast und damit geht es :)
Ist eigentlich ganz einfach und logisch. Komisch dass man da oft nicht selber gleich draufkommt :rolleyes:


Thema wäre eigentlich somit erledigt, aber mich würde trotzdem noch der Ansatz von Bullja interessieren

Die Datensätze lese ich mit fetch_object()
Habs auch mal mit fetch_array probiert, aber ohne Erfolg.
Kannst du einen Beispielcode posten?
 
Ist eigentlich ganz einfach

PHP:
// Leeres Array erzeugen, initialisierung
$List = array();
while($Row = mysql_fetch_object($Result)) {
    //Hier statt string einfach ein Array erstellen
    $List[] = $Row;
}

Und danach dann einfach die oben genannte Möglichkeit benutzen.
Kann natürlich etwas variieren, da weder deine DB kenne, noch deinen Quellcode.
 
Hier mit mysql_fetch_array:
PHP:
while ($row = mysql_fetch_array($result))
    fputcsv($fp, $row);
 

Neue Beiträge

Zurück