Eu uso esta biblioteca para converter array para algum outro formato de dados ou vice-versa.
CI - Servidor Rest
Lá você pode encontrar o formato de biblioteca/classe (Format.php) que você pode usar para converter CSV em array e salvá-lo em seu banco de dados. Esta classe também suporta outro formato:
- xml – quase qualquer linguagem de programação pode ler XML
- json – útil para JavaScript e cada vez mais aplicativos PHP.
- csv – aberto com programas de planilhas
- html – uma tabela HTML simples
- php – Representação de código PHP que pode ser eval()’ed
- serialize – Dados serializados que podem ser não serializados em PHP
EDITAR:
Esta biblioteca funciona em CSV com delimitador "\n" em cada linha e "," em cada coluna, você pode usar assim:
$this->load->library('format');
$string_csv = "YOUR CSV";
$result = $this->format->factory($string_csv, 'csv')->to_array();
var_dump($result);
Simples assim. No entanto, como eu disse acima, se você tiver outro delimitador, precisará ajustar a biblioteca conforme sua necessidade. Aqui a função principal para converter CSV em array:
function _from_csv($string)
{
$data = array();
// Splits
$rows = explode("\n", trim($string));
$headings = explode(',', array_shift($rows));
foreach ($rows as $row)
{
// The substr removes " from start and end
$data_fields = explode('","', trim(substr($row, 1, -1)));
if (count($data_fields) == count($headings))
{
$data[] = array_combine($headings, $data_fields);
}
}
return $data;
}
EDIÇÃO 2:
Meu exemplo funcionará neste formato CSV padrão:
Heading1, Heading2, Heading3
"1","John","London"
"2","Brian","Texas"