Recupera una línea del archivo y la analiza como datos CSV

# SplFileObject::fgetcsv

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

SplFileObject::fgetcsv — Recupera una línea del archivo y la analiza como datos CSV

### Descripción

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

Recupera 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_CTYPE` es `en_US.UTF-8`.

### Parámetros

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

`enclosure`

  El 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.

  Advertencia

  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.

  Advertencia

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

Advertencia

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.

### Valores devueltos

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 `null` a menos que se utilice `SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE`, en cuyo caso, las líneas vacías serán ignoradas.

### Errores/Excepciones

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.

### Historial de cambios

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.

### Ejemplos

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

### Ver también

- SplFileObject::fputcsv() - Escribe un array en forma de línea CSV
- SplFileObject::setCsvControl() - Define las opciones CSV
- SplFileObject::getCsvControl() - Recupera las opciones para CSV
- SplFileObject::setFlags() - Establece flags para el SplFileObject
- `SplFileObject::READ_CSV`
- SplFileObject::current() - Recupera la línea actual del fichero
- fputcsv() - Formatea una línea en CSV y la escribe en un fichero
- fgetcsv() - Obtiene una línea desde un puntero de archivo y la analiza para campos CSV
- str_getcsv() - Analiza una string CSV en un array

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open