Ultima revisión 27/12/2012
Convertir un CSV en Array con PHP
CSV2Array es una función que permite convertir un CSV en un array asociativo. Sólo necesita enviar la cadena en formato CSV a tratar y, si se desea, el carácter especial de separación entre celdas.
$data es una cadena que contiene el CSV bien formado. $separator es el carácter o símbolo separador de celdas. Por defecto es punto y coma.
/**
* @author Pablo E. Fernández Casado
* @author Pablo E. Fernández Casado <islavisual@gmail.com>
* @version 1.0b
* @license GPL
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* Function to convert a string in CSV Format into an associative array readable for the application.
* @param string $data The source CSV.
* @return array Returns an associative array readable.
* CSV example for the application.
* -------------------------------
* language;español
* origen;csv
* destino;array
* user;username;root
* ;password;toor
* query;Covertir
*/
function CSV2Array($data, $separator = ";"){
// Calculamos el número máximo de niveles.
$result = array();
$rows = explode("\n", $data);
$key = "";
$recall="";
foreach($rows as $row){
$values = substr($row, stripos($row,$separator)+1);
$aux = substr($row, 0, stripos($row,$separator));
if($aux != "") $key = $aux;
if($result[$key] != "") $result[$key] .= "\n".trim($values);
else $result[$key] = trim($values);
if(strpos($result[$key],$separator) !== false) $recall = $key;
}
if($recall != "") $result[$recall]= CSV2Array($result[$recall], $separator);
return $result;
}
$str ="language;español
origen;csv
destino;array
user;username;root
;password;toor
query;Convertir";
$arr = CSV2Array($str);
header('Content-Type: text/html; charset=utf-8');
echo print_r($arr);
Espero que os sea útil alguna vez.