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');

повертає true.

Назад