Seguramente alguna vez hemos tenido la necesidad de importar el contenido de un archivo Excel, normalmente en formato CSV, a nuestra base de datos. Dependiendo del tamaño del mismo, esta tarea puede convertirse en agotadora si pensamos hacerlo manualmente. Por eso vamos a ver un par de funciones PHP que nos permitirán hacerlo automáticamente de una manera mucho más cómoda, simplificando la tarea de importación considerablemente:
Función str_getcsv
Con la función str_getcsv
de PHP podemos convertir un string en formato CSV a un array que contiene los campos leídos. Su sintaxis es la siguiente: array str_getcsv(string $input[, string $delimiter]])
// Convierte un csv a un array
$lines = file($filename);
foreach($lines as $line) {
$values = str_getcsv($line, $delimiter, $enclosure, $escape);
if(!$header) $header = $values;
else $data[] = array_combine($header, $values);
}
Función fgetcsv
La función fgetcsv()
de PHP analiza la línea que lee para buscar campos en formato CSV, devolviendo un array que contiene los campos leídos. La sintaxis sería: array fgetcsv(resource $handle[, int $length[, string $delimiter]])
// Obtenemos linea por linea del csv apuntando al siguiente cada vez
if (($handle = fopen($file, "r")) === FALSE) return;
while (($cols = fgetcsv($handle, 1000, "\t")) !== FALSE) {
foreach( $cols as $key => $val ) {
$cols[$key] = trim( $cols[$key] );
$cols[$key] = iconv('UCS-2', 'UTF-8', $cols[$key]."\0") ;
$cols[$key] = str_replace('""', '"', $cols[$key]);
$cols[$key] = preg_replace("/^\"(.*)\"$/sim", "$1", $cols[$key]);
}
echo print_r($cols, 1);
}
Referencias:
- Función str_getcsv – Manual de PHP
- Función fgetcsv – Manual de PHP
Deja una respuesta