Cómo analizar un archivo CSV en PHP

Un CSV es un tipo de archivo. Significa Comma Separated Values. Es comúnmente usado en diferentes programas como Excel. Esto permite que los datos se guarden en un formato tabular y con una extensión csv.

Para analizar un archivo CSV en PHP, se puede hacer usando la combinación de funciones fopen(), fgetcsv() y fclose() que están incorporadas en PHP.

Ejemplo:

/*
//sampleFile.csv
dog, cat, rat, fish
horse, cow, carabao
bird, rabbit, chicken
*/
$ctr = 1;
if (($file = fopen("sampleFile.csv", "r")) !== FALSE) {
  while (($record = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $total = count($record);
    echo "<p> $total fields in line $row: <br /></p>\n";
    $ctr++;
    for ($x = 0; $x < $ctr; $x++) {
        echo $record[$x] . "<br />\n";
    }
  }
  fclose($file);
}
//output:
/*
4 fields in line 1:

dog
cat
3 fields in line 2:

horse
cow
carabao
3 fields in line 3:

bird
rabbit
chicken
*/

El ejemplo anterior analiza el contenido de sampleFile.csv usando estas funciones:

fopen(Filename, Mode, Include_path, context)

Esta función acepta una URL o un archivo, vincula un recurso con nombre que se especifica por nombre de archivo a un flujo.

Parámetros:

  • Filename (requerido) - Este parámetro especifica el archivo o URL a abrir
  • Mode (requerido) - Esto representa el tipo de acceso que requiere el archivo.
  • Include_path (opcional) - Ajustando este parámetro a 1 buscará el archivo en el include_path.
  • context (opcional) - Esto especifica el contenido del manejador de archivos. Es un conjunto de opciones que pueden ser actualizadas en el comportamiento del flujo.

fgetcsv()

Esta función es responsable de analizar una línea de un archivo CSV abierto.

Parámetros:

  • File (requerido) - Este parámetro especifica el archivo abierto del que devolver y analizar una línea.
  • Length (opcional en PHP 5 y versiones posteriores pero requerido en PHP 5.1 y versiones posteriores) - Este parámetro es la longitud máxima de la línea. Debe ser mayor que la línea más larga del archivo. Si este parámetro no está presente, entonces la longitud no está limitada, lo que hace más lento el análisis.
  • Separador (opcional) - Este parámetro es el separador de campos, y el valor por defecto es una coma - ,.
  • Enclosure (opcional) - Este parámetro es el cierre de campo, y el valor por defecto es ".
  • Escape (opcional) - Este parámetro es el carácter de escape, y el valor por defecto es \\.

fclose()

Esta función cierra un puntero de archivo abierto.

Parámetro:

  • File (requerido) - Esto especifica que archivo cerrar.

Nota: El puntero del archivo debe ser válido, y debe apuntar a un archivo abierto con éxito por fopen().