Importaciones desde excel en PHP: str_getcsv VS fgetcsv

Importaciones desde excel en PHP: str_getcsv VS fgetcsv

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:

Deja una respuesta

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