Есть архив, в нём файлы с именами на русском языке.
С помощью ZipArchive открываю архив, и хочу распаковать только те файлы, название которых начинается с буквы У, на русском языке.
С ходу не получилось, выяснилось что ZipArchive работает в CP866, поэтому сделал такое:
$filename = $zip->getNameIndex($i);
$filename = iconv('CP866', 'utf-8', $filename);
echo $filename;
В результате получаю правильное название файла.
Далее делаю проверку по первому символу (
$filename[0] или
substr($filename, 0, 1)) - не работает. Сделал вывод этого символа - получил такое: "Первый символ файла: �"
Попробовал установить кодировку скрипта в самом начале:
mb_internal_encoding("utf-8");
Но это тоже не помогло.
Попробовал сделать сравнение всей строки с полным названием файла - работает, сходится:
if ($filename == "уф100000.xls") echo "Есть";
У меня такое впервые, в чём может быть дело?
ответ: нужно было брать первые 2 символа: substr($filename, 0, 2)
, или использовать другую функцию:
mb_substr($filename, 0, 1)