Trabajo con CSV en PHP: guía completa
CSV (Comma-Separated Values) es uno de los formatos más populares para el intercambio de datos tabulares. En PHP, el trabajo con CSV está implementado de forma nativa, sin necesidad de instalar bibliotecas adicionales. En este artículo, analizaremos todos los aspectos: desde la lectura básica hasta el procesamiento avanzado de archivos grandes.
Funciones principales para trabajar con CSV
PHP proporciona dos funciones clave para trabajar con CSV:
fgetcsv()— lectura de una línea CSV desde un archivofputcsv()— escritura de una línea en formato CSV
Adicionalmente, se utilizan funciones estándar de manejo de archivos: fopen(), fclose(), file().
Lectura de un archivo CSV en PHP
La forma más sencilla de leer un CSV es usar un bucle while con fgetcsv():
<?php$filename = 'data.csv';
if (($handle = fopen($filename, 'r')) !== false) { // Leemos los encabezados (primera línea) $headers = fgetcsv($handle, 1000, ','); // Leemos las líneas restantes while (($row = fgetcsv($handle, 1000, ',')) !== false) { echo "Nombre: " . $row[0] . ", Email: " . $row[1] . "<br>"; } fclose($handle);}?>Parámetros de fgetcsv():
handle— descriptor de archivolength— longitud máxima de la línea (por defecto 0 — sin límite)separator— delimitador de campos (por defecto coma)enclosure— carácter de comillas (por defecto comillas dobles)escape— carácter de escape (por defecto barra invertida)
Lectura de CSV con delimitadores personalizados
No todos los CSV usan coma. A menudo se encuentra punto y coma (;) o tabulación:
<?php$handle = fopen('data.tsv', 'r');while (($row = fgetcsv($handle, 1000, "\\t")) !== false) { print_r($row);}fclose($handle);?>Escritura de datos en CSV
La función fputcsv() maneja automáticamente el escape y las comillas:
<?php$data = [ ['Iván', 'ivan@example.com', 25], ['María', 'maria@example.com', 30], ['Pedro', 'petr@example.com', 28]];
$handle = fopen('users.csv', 'w');
// Escribimos los encabezadosfputcsv($handle, ['Nombre', 'Email', 'Edad']);
// Escribimos los datosforeach ($data as $row) { fputcsv($handle, $row);}
fclose($handle);echo "¡Archivo CSV creado exitosamente!";?>Parámetros de fputcsv():
handle— descriptor de archivofields— array de campos a escribirseparator— delimitador de camposenclosure— carácter de comillasescape— carácter de escape
Exportación de datos a CSV para descarga
A menudo es necesario generar un CSV y entregarlo al usuario para su descarga:
<?php$data = [ ['Producto', 'Precio', 'Cantidad'], ['Portátil', 75000, 10], ['Ratón', 1500, 50], ['Teclado', 3500, 30]];
header('Content-Type: text/csv; charset=utf-8');header('Content-Disposition: attachment; filename="products.csv"');
$output = fopen('php://output', 'w');// Agregamos BOM para la correcta visualización de caracteres cirílicos en Excelfprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($data as $row) { fputcsv($output, $row);}
fclose($output);exit;?>Procesamiento de archivos CSV grandes
Al trabajar con archivos grandes (cientos de miles de líneas), es importante evitar cargar todo el archivo en memoria. Utilice procesamiento por flujo:
<?phpfunction processLargeCSV($filename, $batchSize = 1000) { $handle = fopen($filename, También en la biblioteca
GameplayKit Swift: guía completa con ejemplos prácticos
Registro en Rust: revisión de las mejores bibliotecas y soluciones para tu proyecto
ORM para Swift (iOS/macOS): comparación y ejemplos de uso
openapi-typescript para TypeScript: guía completa con ejemplos
Autorización y autenticación en Swift: guía completa para iOS/macOS