fgetcsv () игнорирует специальные символы, когда они находятся в начале строки!
У меня есть простой скрипт, который принимает файл CSV и читает каждую строку в массив. Затем я перебираю каждый столбец первого ряда (в моем случае он содержит вопросы опроса) и распечатываю их. Опрос проводится на французском языке, и когда первым символом вопроса является специальный символ (é, ê, ç и т. Д.), Fgetcsv просто пропускает его.
Специальные символы в середине значения не затрагиваются, только когда они являются первым символом.
Я пытался отладить это, но я сбит с толку. Я сделал var_dump с содержимым файла, и символы определенно есть:
var_dump(utf8_encode(file_get_contents($_FILES['csv_file']['tmp_name'])));
И вот мой код:
if(file_exists($_FILES['csv_file']['tmp_name']) && $csv = fopen($_FILES['csv_file']['tmp_name'], "r"))
{
$csv_arr = array();
//Populate an array with all the cells of the CSV file
while(!feof($csv))
{
$csv_arr[] = fgetcsv($csv);
}
//Close the file, no longer needed
fclose($csv);
// This should cycle through the cells of the first row (questions)
foreach($csv_arr[0] as $question)
{
echo utf8_encode($question) . "<br />";
}
}