fgetcsv

(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)

Beschreibung

fgetcsv(
    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 Wert en_US.UTF-8 hat, könnten 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) 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 das escape-Zeichen verwendet werden. So haben die Werte "" und \" standardmäßig dieselbe Bedeutung. Abgesehen von der Möglichkeit, das enclosure-Zeichen zu maskieren, hat das Zeichen escape 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

VersionBeschreibung
8.0.0length ist jetzt nullbar.
7.4.0 Der Parameter escape akzeptiert nun auch eine leere Zeichenkette, um den proprietären Maskierungsmechanismus zu deaktivieren.

Beispiele

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);
}
?>

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
To Top