fgetcsv

(PHP 4, PHP 5, PHP 7)

fgetcsvObtiene una línea de un puntero a un fichero y la analiza en busca de campos CSV

Descripción

fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]]] ) : array

Similar a fgets() excepto que fgetcsv() analiza la línea que lee para buscar campos en formato CSV, devolviendo un array que contiene los campos leídos.

Parámetros

handle

Un puntero a un fichero abierto correctamente por fopen(), popen(), o fsockopen().

length

La longitud. Debe ser mayor que la línea más larga (en caracteres) encontrada en el fichero CSV (permitiendo caracteres fin de línea finales). Es opcional en PHP 5. Al omitir este parámetro (o estableciéndolo a 0 en PHP 5.1.0 y posterior), la longitud máxima de línea no está limitada, lo que es ligeramente más lento.

delimiter

El parámetro opcional delimiter establece el delimitador de campo (un sólo carácter).

enclosure

El parámetro opcional enclosure establece el carácter circundante de cada campo (un sólo carácter).

escape

El parámetro opcional escape establece el carácter de escape (un sólo carácter). Por defecto, es una barra invertida.

Valores devueltos

Devuelve un array indexado que contiene los campos leídos.

Nota:

Una línea en blanco en un fichero CSV será devuelta como un array que comprende un único campo null, por lo que no será tratada como un error.

Nota: Si sufre problemas con PHP no reconociendo los finales de línea cuando lee o crea ficheros en Macintosh, puede probar de activar la opción de configuración en tiempo de ejecución auto_detect_line_endings para intentar resolver el problema.

fgetcsv() devuelve NULL si se proporciona un handle no válido, o FALSE en los demás errores, incluido el final de fichero.

Historial de cambios

Versión Descripción
5.3.0 Se añadió el parámetro escape
5.1.0 El parámetro length ahora es opcional. El valor predeterminado es 0, significando sin límite de longitud.
4.3.5 fgetcsv() ahora es segura al trabajar con datos binarios

Ejemplos

Ejemplo #1 Leer e imprimir el contenido completo de un fichero CSV

<?php
$fila 
1;
if ((
$gestor fopen("test.csv""r")) !== FALSE) {
    while ((
$datos fgetcsv($gestor1000",")) !== FALSE) {
        
$numero count($datos);
        echo 
"<p> $numero de campos en la línea $fila: <br /></p>\n";
        
$fila++;
        for (
$c=0$c $numero$c++) {
            echo 
$datos[$c] . "<br />\n";
        }
    }
    
fclose($gestor);
}
?>

Notas

Nota:

Esta función toma en cuenta los parámetros de configuraciones regionales. Si LANG es, p.ej., en_US.UTF-8, los ficheros codificados con un byte son leídos de forma errónea por esta función.

Ver también

  • str_getcsv() - Convierte un string con formato CSV a un array
  • explode() - Divide un string en varios string
  • file() - Transfiere un fichero completo a un array
  • pack() - Empaqueta información a una cadena binaria
  • fputcsv() - Dar formato CSV a una línea y escribirla en un puntero a un fichero