fgetcsv
(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Liest eine Zeile von der Position des Dateizeigers und prüft diese auf Komma-Separierte-Werte (CSV)
Beschreibung
resource
$stream
,?int
$length
= null
,string
$separator
= ",",string
$enclosure
= "\"",string
$escape
= "\\"): array|false
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önnen Dateien in Ein-byte-Kodierung von dieser Funktion falsch gelesen werden.
Parameter-Liste
-
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), 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 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-Begrenzungs Zeichen (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 dasescape
Zeichen alternativ dazu verwendet werden. So haben standardmäßig die Werte""
und\"
die selbe Bedeutung. Außer der Möglichkeit, dasenclosure
Zeichen durch dasescape
Zeichen maskieren zu können, hat letzteres keine besondere Bedeutung; es ist nicht einmal dazu geeignet, sich selbst zu maskieren.
Rückgabewerte
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.
Changelog
Version | Beschreibung |
---|---|
8.0.0 |
length ist jetzt nullbar.
|
7.4.0 |
Der escape Parameter akzeptiert nun auch eine leere
Zeichenkette, um den proprietären Maskierungsmechanismus zu deaktivieren.
|
Beispiele
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);
}
?>
Siehe auch
- str_getcsv() - Parst einen CSV-String in ein Array
- explode() - Teilt eine Zeichenkette anhand einer Zeichenkette
- file() - Liest eine komplette Datei in ein Array
- pack() - Packt Daten in eine binäre Zeichenkette
- fputcsv() - Format line as CSV and write to file pointer