(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::fgetcsv — Obtiene la línea del archivo y analiza como campos CSV
$separator
= ",", string$enclosure
= "\"", string$escape
= "\\"): array|falseObtiene una línea del archivo que está en formato CSV y devuelve un array que contiene los campos leídos.
Nota:
Esta función tiene en cuenta los ajustes de localización. Si
LC_CTYPE
es p.e.en_US.UTF-8
, los archivos en codificaciones de un byte pueden ser leídos erróneamente por esta función.
delimiter
El delimitador de campo (un solo carácter). El valor por defecto es una coma o el valor establecido usando SplFileObject::setCsvControl().
enclosure
El carácter circundante de cada campo (sólo un carácter). Por omisión, son comillas dobles o el valor establecido por SplFileObject::setCsvControl().
escape
El carácter de escape (a lo sumo un carácter). Por defecto es una barra invertida (\
) o el valor establecido usando SplFileObject::setCsvControl(). Un string vacío (""
) desactiva el mecanismo de escape propio.
Nota: Normalmente un carácter
enclosure
se escapa dentro de un campo duplicándolo; sin embargo, el carácterescape
puede ser usado como una alternativa. Así que para los valores de parámetros por defecto""
y\"
tienen el mismo significado. Aparte de permitir espacar el carácterenclosure
el carácterescape
no tiene un significado especial; ni siquiera está destinado a escapar de sí mismo.
Devuelve un array indexado que contiene los campos que se leen, o false
en caso de error.
Nota:
Una línea en blanco en un archivo CSV será devuelto como un array que comprende un único
null
a menos que se utiliceSplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE
, en cuyo caso se saltan las líneas vacías.
Versión | Descripción |
---|---|
7.4.0 | El parámetro escape ahora también acepta un string vacío para desactivar el mecanismo de escape propio. |
Ejemplo #1 Ejemplo de SplFileObject::fgetcsv()
<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
Ejemplo #2 Ejemplo de SplFileObject::READ_CSV
<?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);
}
?>
El contenido de animals.csv
crocodile,reptile,4 dolphin,mammal,0 duck,bird,2 koala,mammal,4 salmon,fish,0
El resultado del ejemplo sería algo similar a:
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