PHP: доступ до файлів за допомогою висловлювань під Windows

Файли на веб-серверах завжди повинні бути без пробілів (не "це картинка.jpg"), без відмінок або спеціальних символів (не "football.jpg"), без зворотних скісних рисок (не "Arbeit \ Auto.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');

повертає true.

Назад