(PHP 4, PHP 5, PHP 7)
fgetcsv — Liest eine Zeile von der Position des Dateizeigers und prüft diese auf Komma-Separierte-Werte (CSV)
$handle
[, int $length
= 0
[, string $delimiter
= ","
[, string $enclosure
= '"'
[, string $escape
= "\"
]]]] )Die Funktion fgetcsv() ist ähnlich der Funktion fgets(), nur dass fgetcsv() die eingelesene Zeile auf Felder im CSV Format (kommaseparierte Felder) hin überprüft, und ein Array mit den gelesenen Feldern zurückgibt.
handle
Ein gültiger Dateizeiger auf eine Datei, die zuvor mit fopen(), popen() oder fsockopen() geöffnet wurde.
length
Muss größer als die längste Zeile (in Zeichen), die in der CSV
Datei vorhanden ist, sein (dies erlaubt die Erkennung abschließender
Zeilenende Zeichen). Andernfalls wird die Zeile in Blöcke von
length
Zeichen aufgeteilt, es sei denn, die
Aufteilung würde innerhalb einer Feldbegrenzung erfolgen.
Wird dieser Paramter ausgelassen (oder in PHP 5.1.0 und später auf 0 gesetzt), ist die maximale Zeilenlänge nicht begrenzt, was ein wenig langsamer ist.
delimiter
Der optionale Parameter delimiter
setzt das
Feld-Trennzeichen (nur ein Zeichen).
enclosure
Der optionale Parameter enclosure
setzt das
Feld-Begrenzungs Zeichen (nur ein Zeichen).
escape
Der optionale Parameter escape
setzt das
Maskierungs-Zeichen (nur ein Zeichen).
Gibt ein numerisch indexiertes Array zurück, das die gelesenen Felder enthält.
Hinweis:
Ein leere Zeile in einer CSV Datei wird als ein Array zurückgegeben, das ein einzelnes null Feld enthält und wird nicht als Fehler behandelt.
Hinweis: Wenn Sie Probleme damit haben, dass PHP Zeilenendezeichen nicht erkennt, entweder beim Lesen von Dateien auf einem Macintosh oder bei Dateien, die auf einem Macintosh erstellt wurden, können Sie die Option auto_detect_line_endings aktivieren.
fgetcsv() gibt NULL
zurück, wenn ein ungültiger
handle
übergeben wurde oder FALSE
bei anderen
Fehlern einschließlich Dateiende.
Version | Beschreibung |
---|---|
5.3.0 |
Der escape Parameter wurde ergänzt
|
5.1.0 |
Der Parameter length ist nun optional.
Standard ist 0, d.h. keine Längenbeschränkung.
|
4.3.5 | fgetcsv() ist nun "binary safe" |
Beispiel #1 Lies und gib den gesamten Inhalt einer CSV Datei aus
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num Felder in Zeile $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
Hinweis:
Die Spracheinstellung (locale) wird von dieser Funktion beachtet. Wenn LANG z.B. den Wert en_US.UTF-8 hat, werden Dateien in Ein-byte-Kodierung von dieser Funktion falsch gelesen.