Попробуйте )
// чтение CSV в удобный массив
function csv2array($file, $charset_in = 'windows-1251', $charset_out = 'utf-8')
{
$handle = fopen($file, 'r');
if ($handle === false) {
echo 'Не удалось открыть файл '.$file;
exit();
}
$data = $fields = array();
$i = 0;
if ($handle) {
while (($row = fgetcsv($handle, 0, ';')) !== false) {
if (empty($fields)) {
foreach ($row as $k => $r) {
$row[$k] = iconv($charset_in, $charset_out.'//IGNORE', $r);
}
$fields = $row;
continue;
}
foreach ($row as $k => $value) {
if (!empty($fields[$k])) {
$value = iconv($charset_in, $charset_out.'//IGNORE', $value);
$data[$i][$fields[$k]] = $value;
}
}
$i++;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
unset($fields);
return $data;
}