Leer un archivo CSV con PHP

Cuando trabajas con PHP y sobre todo con bases de datos (BBDD) se te puede presentar la situación  de que un cliente te pida que le migres una serie de datos a una BBDD pero que estos se encuentren en un archivo CSV (del inglés comma-separated values) y por tanto deberemos leer el archivo linea a linea y columna por columna.

Como en la mayoria de casos en los que tienes que hacer algo en PHP podrás encontrar cientos de librerias que te ayuden con este cometido pero en nuestro caso vamos a utilizar una función nativa que lleva implementada desde la versión 4 de este lenguaje de programación. Dicha función es fgetcsv , algo similar al clásico fgets pero destinado a leer el archivo que deseamos analizar así que vamos al lío.

Leer un archivo CSV con PHP

En nuestro caso el archivo csv se llama clientes.csv y los campos que tiene el mismo son:

  • Nombre y apellidos
  • Teléfono
  • Email

El código que usaremos será el siguiente:

<?php
$linea = 0;
//Abrimos nuestro archivo
$archivo = fopen("clientes.csv", "r");
//Lo recorremos
while (($datos = fgetcsv($archivo, ",")) == true)
{
$num = count($datos);
//Recorremos las columnas de esa linea
for ($columna = 0; $columna < $num; $columna++)
{
echo $datos[$columna] . "\n";
}
}
//Cerramos el archivo
fclose($archivo);
?>

Debéis fijaros en que en la linea que usamos la función en si (fgetcsv), primero indicamos el archivo que hemos abierto previamente con fopen y después indicamos el delimitador de nuestro archivo.

Si los datos que extraemos en nuestra base de datos los quisiéramos insertar en la BBDD podríamos recogerlos en el for y hacer una query a nuestra base de datos.

Cualquier duda que os pueda surgir, dejar un comentario.

6 comentarios en “Leer un archivo CSV con PHP”

  1. Hola, muchas gracias muy útil. Pero tengo una pregunta ¿Cómo hago un sistema de login extrayendo los datos desde un archivo csv , sin importarlo a una base de datos sino directamente?.

    1. Juan Santamaría Moreno

      Tendrías que hacer un recorrido del CSV y buscar las coincidencias. Yo optaría sin duda por usar un sistema de base de datos para dicho cometido.

      Un saludo!

    1. Juan Santamaría Moreno

      Buenas Juanma, se había desconfigurado el plugin del resaltado de código y estaba mostrando < en vez de < que es con lo que debe funcionarte.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies