Leer archivo CSV con PHP
Podemos vernos en la situación de necesitar pasar un archivo con extensión CSV a PHP, es decir, leer un fichero de tipo CSV y procesar sus datos utilizando el lenguaje de programación PHP.
Ejemplo
A continuación os mostramos un ejemplo muy simple creado para poder leer un archivo CSV y mostrar por pantalla su contenido.
<?php
class Csv{
private $csv_file_name;
public function __construct($csv_file_name){
$this->csv_file_name = $csv_file_name;
}
private function checkDelimiter(){
$delimiters = [";" => 0, "," => 0, "\t" => 0, "|" => 0];
$handle = fopen($this->csv_file_name, "r");
$firstLine = fgets($handle);
fclose($handle);
foreach ($delimiters as $delimiter => &$count) {
$count = count(str_getcsv($firstLine, $delimiter));
}
return array_search(max($delimiters), $delimiters);
}
public function csvToArray(){
$result = array();
$csv = file($this->csv_file_name);
foreach($csv as $line) {
$result[] = str_getcsv($line, $this->checkDelimiter());
}
return $result;
}
}
?>
La forma de uilización sería algo similar a esto:
<?php
$processCsv_obj = new Csv("informacion.csv");
$data = $processCsv_obj->csvToArray();
print("<pre>".print_r($data, true)."</pre>");
?>
En el ejemplo anterior, el método csvToArray() lee el fichero y retorna un array con las líneas del fichero.
Además hemos creado un método para poder averiguar qué delimitador se está utilizando en el archivo en CSV.
Si lo necesitamos, podremos crear nuevos métodos que realicen acciones sobre estos datos
Csv a base de datos
Si lo que necesitamos es procesar un CSV e insertar su información en una base de datos, podremos utilizar el ejemplo que hemos publicado en esta entrada.