PHP: доступ к файлам с умляутами под Windows

Файлы на веб-серверах всегда должны храниться без пробелов (не "this is an image.jpg"), без умлаутов или специальных символов (не "football.jpg"), без обратных косых черт (не "work\car.jpg") и в нижнем регистре (не "test.JPG"). Однако недавно в рамках клиентского проекта мне пришлось получить доступ к большому количеству предопределенных файлов с произвольными именами и обработать их.


Системы Linux по умолчанию разрешают доступ к файлам с умляутами и специальными символами, поэтому здесь нет необходимости рассматривать какие-либо специальные функции. В системах Windows это выглядит совершенно иначе: здесь вам нужно использовать некоторые приемы и подключиться к интерфейсу COM. Прежде всего, вы включаете необходимое расширение в php.ini

[COM_DOT_NET]
extension = php_com_dotnet.dll

один. Теперь используется очень полезный вспомогательный класс WinfsUtf8 , который значительно упрощает доступ к COM-объектам и отображает почти все функции PHP, влияющие на файлы. После интеграции файла с

require_once('WinfsUtf8.php');

есть все возможности доступа к файлам, например результаты

file_exists('ä.jpg');

неправильно ложь, тогда как

Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');

возвращает истину.

Назад