Проблема с pathinfo()

Рейтинг: 2Ответов: 1Опубликовано: 18.04.2015

Всем привет! Заметил такую особенность, есть клевая функция, pathinfo и вот от нее можно получить имя файла без расширения:

$str = pathinfo('Новый файл.jpg', PATHINFO_FILENAME);

И выводит все это дело вот через var_dump(), вот такую красоту:

string(9) " файл"

Главное, количество символов правильно увидел, 9. А вот первое слово с кириллицы выкидывает. Баг?

Ответы

▲ 8

pathinfo использует текущие настройки локали. Поэтому для корректной работы при использовании многобайтных кодировок необходимо явно устанавливать локаль через setlocale:

setlocale(LC_ALL, 'ru_RU.utf8');

$str = pathinfo('Новый файл.jpg', PATHINFO_FILENAME);
var_dump($str); // string(19) "Новый файл"

UPD: сработает только если соответствующая локаль установлена в системе.

Посмотреть список установленных локалей можно так:

locale -a

Если нужной локали в списке нет, то и установить ее не получится, следовательно и работать это не будет.

Проверить корректность установки локали можно через возвращаемое значение, если setlocale вернет false, то установить локаль не получилось.