(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Liest eine Zeile von der Position des Dateizeigers und prüft diese auf kommaseparierte Werte (CSV)
$stream
,$length
= null
,$separator
= ",",$enclosure
= "\"",$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.
Hinweis:
Die Spracheinstellung (Locale) wird von dieser Funktion beachtet. Wenn
LC_CTYPE
z. B. den Werten_US.UTF-8
hat, könnten Dateien in Ein-Byte-Kodierung von dieser Funktion falsch gelesen werden.
stream
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) sein, die in der
CSV-Datei zu finden ist (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 8.0.0 oder später auf 0
oder null
gesetzt), ist die maximale Zeilenlänge nicht begrenzt, was
ein wenig langsamer ist.
separator
Der optionale Parameter separator
setzt das
Feld-Trennzeichen (nur ein Single-Byte-Zeichen).
enclosure
Der optionale Parameter enclosure
setzt das
Feld-Begrenzungszeichen (nur ein Single-Byte-Zeichen).
escape
Der optionale Parameter escape
setzt das
Maskierungs-Zeichen (höchstens ein Single-Byte-Zeichen). Eine leere
Zeichenkette (""
) deaktiviert den proprietären
Maskierungsmechanismus.
Hinweis: Normalerweise wird ein
enclosure
-Zeichen in einem Feld maskiert, indem es verdoppelt wird; allerdings kann alternativ dazu dasescape
-Zeichen verwendet werden. So haben die Werte""
und\"
standardmäßig dieselbe Bedeutung. Abgesehen von der Möglichkeit, dasenclosure
-Zeichen zu maskieren, hat das Zeichenescape
keine besondere Bedeutung; es ist nicht einmal dazu geeignet, sich selbst zu maskieren.
Gibt bei Erfolg ein numerisch indexiertes Array zurück, das die gelesenen
Felder enthält. Bei einem Fehler wird false
zurückgegeben.
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 PHP Zeilenendezeichen nicht richtig erkennt, entweder beim Lesen von Dateien auf einem Macintosh oder bei Dateien, die auf einem Macintosh erstellt wurden, kann die Option auto_detect_line_endings aktiviert werden.
Version | Beschreibung |
---|---|
8.0.0 |
length ist jetzt nullbar.
|
7.4.0 |
Der Parameter escape akzeptiert nun auch eine
leere Zeichenkette, um den proprietären Maskierungsmechanismus zu
deaktivieren.
|
Beispiel #1 Lesen und Ausgeben des gesamten Inhalts einer CSV-Datei
<?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);
}
?>