# SplFileObject::fgetcsv

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

SplFileObject::fgetcsv — Obtiene la línea del archivo y analiza como campos CSV

### Descripción

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

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

### Parámetros

`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ácter `escape` 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ácter `enclosure` el carácter `escape` no tiene un significado especial; ni siquiera está destinado a escapar de sí mismo.

### Valores devueltos

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 utilice `SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE`, en cuyo caso se saltan las líneas vacías.

### Historial de cambios

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.

### Ejemplos

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

### Ver también

- SplFileObject::setCsvControl() - Establece el carácter delimitador, el circundante y el de escape para campos CSV
- SplFileObject::setFlags() - Establece flags para el SplFileObject
- SplFileObject::READ_CSV
- SplFileObject::current() - Recupera la línea actual del fichero