(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::fgetcsv — Recupera una línea del archivo y la analiza como datos CSV
$separator = ",", string $enclosure = "\"", string $escape = "\\"): array|falseRecupera una línea del archivo y la analiza como datos CSV y devuelve un array que contiene todos los campos leídos.
Nota: Los parámetros de configuración local son tenidos en cuenta por esta función. Por ejemplo, los datos codificados en ciertos juegos de caracteres de un byte pueden ser analizados incorrectamente si
LC_CTYPEesen_US.UTF-8.
separator
El delimitador de campo (un solo carácter de un byte).
Por omisión, , o el valor definido por una llamada previa a
SplFileObject::setCsvControl().
enclosureEl carácter utilizado para encerrar el valor de un campo (un carácter de un solo byte). Por omisión, será una comilla doble o bien el valor definido utilizando el método SplFileObject::setCsvControl().
escape
El carácter de escape de campo (un solo carácter de un byte).
Por omisión, " o el valor definido por una llamada previa a
SplFileObject::setCsvControl().
Un string vacío ("") desactiva el mecanismo de escape propietario.
En el flujo de entrada, el carácter enclosure
siempre puede ser escapado duplicándolo dentro de una cadena entrecomillada,
lo que resulta en un único carácter enclosure
en el resultado analizado.
El carácter escape funciona de manera diferente:
si una secuencia de caracteres escape y
enclosure aparece en la entrada,
ambos caracteres estarán presentes en el resultado analizado.
Así, para los parámetros por defecto, una línea CSV como
"a""b","c\"d" tendrá los campos analizados como
a"b y c\"d, respectivamente.
A partir de PHP 8.4.0, depender del valor por omisión de
escape está deprecado.
Debe ser proporcionado explícitamente ya sea por posición, ya sea mediante
el uso de los argumentos nombrados,
o mediante una llamada a SplFileObject::setCsvControl().
Cuando escape se define con un valor diferente a una cadena vacía
(""), puede resultar en un CSV que no sea compatible con
» RFC 4180 o que no pueda sobrevivir a un ciclo de ida y vuelta
a través de las funciones CSV de PHP. El valor predeterminado de escape es
"\\", por lo que se recomienda definirlo explícitamente como cadena vacía.
El valor predeterminado cambiará en una futura versión de PHP, no antes de PHP 9.0.
Devuelve un array indexado que contiene todos los campos leídos, o false
si ocurre un error.
Nota:
Una línea vacía de un archivo CSV será devuelta en forma de un array contenido un solo campo
nulla menos que se utiliceSplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE, en cuyo caso, las líneas vacías serán ignoradas.
Genera una ValueError si
separator o enclosure
no tiene una longitud de un byte.
Genera una ValueError si
escape no tiene una longitud de un byte o es una cadena vacía.
| Versión | Descripción |
|---|---|
| 8.4.0 |
Confiar en el valor por omisión de escape está ahora
deprecado.
|
| 7.4.0 |
El parámetro escape ahora acepta una cadena de
caracteres vacía para desactivar el mecanismo de escape propietario.
|
Ejemplo #1 Ejemplo con SplFileObject::fgetcsv()
<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
Ejemplo #2 Ejemplo con SplFileObject::READ_CSV
<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("Un %s es un %s con %d patas\n", $animal, $class, $legs);
}
?>Contenido de animals.csv
crocodile,reptile,4 dauphin,mammifère,0 canard,oiseau,2 koala,mammifère,4 saumon,poisson,0
Resultado del ejemplo anterior es similar a:
Un crocodile es un reptile con 4 patas Un dauphin es un mammifère con 0 patas Un canard es un oiseau con 2 patas Un koala es un mammifère con 4 patas Un saumon es un poisson con 0 patas
SplFileObject::READ_CSV