als mit normalen Textdateien. In den meisten Programmiersprachen sind bereits Funktionen und Klassen enthalten,
die das Arbeiten mit CSV Dateien erleichtern und die neu Entwicklung einer eigenen Klasse für das Handling entfällt.
Der klare Vorteil liegt in der meist gleichen Struktur. Ein Zeichen dient als delimiter und begrenzt so zu sagen die Spalte (meist , oder ; ).
Ein anderes Zeichen dient als enclosure und ermöglicht auch delimiter zu nutzen ohne das die gesamte Struktur zerstört wird ( meist " oder ' ).
Natürlich wird immer ein sogenanntes escape-Zeichen benötigt um die reservierten Zeichen dennoch darstellen zu können.
Ein Beispiel:
Tastatur,Maus,Monitor
Array ( [0] => Tastatur, [1] => Maus, [2] => Monitor )
"Tastatur,Maus",Monitor
Array ( [0] => Tastatur,Maus, [1] => Monitor )
Array ( [0] => Tastatur, [1] => Maus, [2] => Monitor )
"Tastatur,Maus",Monitor
Array ( [0] => Tastatur,Maus, [1] => Monitor )
Wie oben sichtbar wird, wird alles zwischen " in eine Spalte des Arrays gepackt und das Trennzeichen hier ignoriert,
nun muss eventuell " genutzt werden dies wird in PHP, wie bei den meisten anderen Funktionen mittels \" escaped.
Leider besteht hier ein kleiner Haken, das \" wird im Array natürlich genau so dargestellt,
d.h. es muss mittels Suchen und Ersetzen ausgetauscht werden.
Das Schreiben der Daten erfolgt wie bei einer Textdatei mittels fwrite.
Funktion
fgetcsv ( $handle, $length, $delimiter, $enclosure, $escape )
$handle (Pflichtwert!)
ein offener Dateizeiger mittels fopen.
$length (Standardwert: 0)
Länge der längsten Zeile, ist seit PHP 5.0 optional, seit PHP 5.0.4 bei Wert 0 ist die Zeilenlänge unbegrenzt, dadurch aber etwas langsamer.
$delimiter (Standardwert: , (Komma))
Nur ein Zeichen erlaubt, alles andere wird ignoriert. Dient als Trennzeichen zwischen den Spalten.
$enclosure (Standardwert: " (Anführungszeichen)
Nur ein Zeichen erlaubt, alles andere wird ignoriert. Dient als Texttrenner, damit die Zeichen von $delimiter im eingeschlossenen Text genutzt werden können
$escape (Standardwert: \\)
Dient dazu $enclosure Zeichen zu escapen, damit diese darin genutzt werden können.
Snippet
$fp = fopen ( 'test.csv', 'r' );
while ( $data = fgetcsv ( $fp , 0 , ',' , '"' ) )
{
print_r($data);
}
fclose ( $fp );
while ( $data = fgetcsv ( $fp , 0 , ',' , '"' ) )
{
print_r($data);
}
fclose ( $fp );

