$handle = fopen("test.csv", "r"); // открывает файл на чтение
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { // получаем построчно в виде массива строку, не забывайте указать разделитель, он может быть отличаться от данного
$arr[] = array_map(function($val) { // применяем array_map для обработки каждого элемента массива
return iconv('CP1251', 'UTF-8', $val); // iconv меняет кодировку переданной строки
}, $data);
}
fclose($handle);
Второй вариант меняет кодировку всего содержимого файла, а уже потом парсит его:
$handle = fopen('php://memory', 'w+'); // создает ресурс в пямяти
fwrite($handle, iconv('CP1251', 'UTF-8', file_get_contents('test.csv'))); // fwrite - записывает данные полученные из file_get_contents перед эти данным меняется кодировка с помощью iconv
rewind($handle); // ставим указатель в начало файла
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { // получаем построчно в виде массива строку, не забывайте указать разделитель, он может быть отличаться от данного
$arr[] = $data;
}
fclose($handle);
В итоге в переменно $arr
будет массив вот такой структуры:
array(21) {
[0]=>
array(29) {
[0]=>
string(14) "portfolio_name"
[1]=>
string(8) "lot_name"
}
[1]=>
array(29) {
[0]=>
string(18) "Портфель 1"
[1]=>
string(1) "lot_name1"
}
[2]=>
array(29) {
[0]=>
string(18) "Портфель 2"
[1]=>
string(1) "lot_name2"
}
}