SplFileObject::fgetcsv

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::fgetcsvGets line from file and parse as CSV fields

Beschreibung

public SplFileObject::fgetcsv(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array|false

Gets a line from the file which is in CSV format and returns an array containing the fields read.

Hinweis: Die Spracheinstellung (Locale) wird von dieser Funktion beachtet. Beispielsweise können Daten, die in bestimmten Ein-Byte-Kodierungen kodiert sind, falsch interpretiert werden, wenn LC_CTYPE den Wert en_US.UTF-8 hat.

Parameter-Liste

separator

The field delimiter (one single-byte character only). By default , or the value set by a prior call to SplFileObject::setCsvControl().

enclosure

The field enclosure character (one single-byte character only). By default " or the value set by a prior call to SplFileObject::setCsvControl().

escape

The escape character (at most one single-byte character). By default \ or the value set by a prior call to SplFileObject::setCsvControl(). An empty string ("") disables the proprietary escape mechanism.

Warnung

In the input stream, the enclosure character can always be escaped by doubling it inside a quoted string, resulting in a single enclosure character in the parsed result. The escape character works differently: If a sequence of escape and enclosure characters appear in the stream, both characters will be present in the parsed value. So for the default parameters, "" in quoted strings will be parsed as ", while \" parsed as \".

Warnung

As of PHP 8.4.0, depending on the default value of escape is deprecated. It needs to be provided explicitly either positionally or by the use of Named Arguments, or by a call to SplFileObject::setCsvControl().

Warnung

Wenn escape auf etwas anderes als eine leere Zeichenkette ("") gesetzt wird, kann dies zu einer CSV-Datei führen, die nicht mit » RFC 4180 konform ist oder die den Umlauf durch die PHP-CSV-Funktionen nicht übersteht. Der Standardwert für escape ist "\\", weshalb empfohlen wird, diesen Parameter explizit auf eine leere Zeichenkette zu setzen. Der Standardwert wird sich in einer zukünftigen Version von PHP ändern, jedoch nicht vor PHP 9.0.

Rückgabewerte

Returns an indexed array containing the fields read, or false on error.

Hinweis:

A blank line in a CSV file will be returned as an array comprising a single null field unless using SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE, in which case empty lines are skipped.

Fehler/Exceptions

Wenn separator oder enclosure nicht ein Byte lang ist, wird ein ValueError geworfen.

Wenn escape nicht ein Byte lang oder eine leere Zeichenkette ist, wird ein ValueError geworfen.

Changelog

Version Beschreibung
8.4.0 Sich auf den Standardwert von escape zu verlassen, ist nun veraltet.
7.4.0 The escape parameter now also accepts an empty string to disable the proprietary escape mechanism.

Beispiele

Beispiel #1 SplFileObject::fgetcsv() example

<?php
$file
= new SplFileObject("data.csv");
while (!
$file->eof()) {
var_dump($file->fgetcsv());
}
?>

Beispiel #2 SplFileObject::READ_CSV example

<?php
$file
= new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach (
$file as $row) {
list(
$animal, $class, $legs) = $row;
printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>

Contents of animals.csv

crocodile,reptile,4
dolphin,mammal,0
duck,bird,2
koala,mammal,4
salmon,fish,0

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

A crocodile is a reptile with 4 legs
A dolphin is a mammal with 0 legs
A duck is a bird with 2 legs
A koala is a mammal with 4 legs
A salmon is a fish with 0 legs

Siehe auch