Escribe un array en forma de línea CSV

# SplFileObject::fputcsv

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

SplFileObject::fputcsv — Escribe un array en forma de línea CSV

### Descripción

public function SplFileObject::fputcsv(
array `$fields`,
string `$separator` = ",",
string `$enclosure` = "\"",
string `$escape` = "\\",
string `$eol` = "\n"
): int|false

Escribe un array `fields` en forma de línea CSV.

### Parámetros

`fields`

  Un array de valores.

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

`eol`

  El parámetro opcional `eol` define una secuencia de fin de línea personalizada.

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.

> Nota:

> Si un carácter `enclosure` está contenido en un campo, será escapado duplicándolo, a menos que esté inmediatamente precedido por un `escape`.

### Valores devueltos

Devuelve la longitud de la cadena escrita o `false` si ocurre un error.

### 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.
8.1.0 | Se añadió el parámetro opcional `eol`.
7.4.0 | El parámetro `escape` ahora acepta una cadena vacía para desactivar el mecanismo de escape propietario.

### Ejemplos

Ejemplo #1 Ejemplo con SplFileObject::fputcsv()

    <?php

    $list = array (
        array('aaa', 'bbb', 'ccc', 'dddd'),
        array('123', '456', '789'),
        array('"aaa"', '"bbb"')
    );

    $file = new SplFileObject('file.csv', 'w');

    foreach ($list as $fields) {
        $file->fputcsv($fields);
    }

    ?>

El siguiente ejemplo escribirá la línea siguiente en el fichero `file.csv`:

    aaa,bbb,ccc,dddd
    123,456,789
    """aaa""","""bbb"""

### Ver también

- SplFileObject::fgetcsv() - Recupera una línea del archivo y la analiza como datos CSV
- SplFileObject::setCsvControl() - Define las opciones CSV
- SplFileObject::getCsvControl() - Recupera las opciones para CSV
- 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