PHP: Dostęp do plików z umlautami pod Windows

Pliki na serwerach WWW powinny być zawsze bez spacji (nie „to jest obrazek.jpg”), bez umlautów ani znaków specjalnych (nie „football.jpg”), bez ukośników odwrotnych (nie „Arbeit \ Auto.jpg”) i małymi literami (nie „” test.JPG ”). Jednak ostatnio musiałem uzyskać dostęp i przetworzyć dużą liczbę gotowych plików o dowolnej nazwie dla projektu klienta.


Systemy Linux domyślnie zezwalają na dostęp do plików z umlautami i znakami specjalnymi, więc nie trzeba tutaj uwzględniać żadnych specjalnych funkcji. Zupełnie inaczej wygląda w systemach Windows: tutaj musisz użyć kilku sztuczek i wejść do interfejsu COM. Przede wszystkim należy dołączyć wymagane rozszerzenie do php.ini

[COM_DOT_NET]
extension = php_com_dotnet.dll

jeden. Teraz używana jest bardzo pomocna klasa WinfsUtf8 , która znacznie upraszcza dostęp do obiektów COM i odwzorowuje prawie wszystkie funkcje PHP, które mają wpływ na pliki. Po integracji pliku z

require_once('WinfsUtf8.php');

mamy wszystkie możliwości dostępu do plików, na przykład wyników

file_exists('ä.jpg');

niepoprawnie fałszywe, podczas gdy

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

zwraca prawdę.

Plecy