PHP: Filadgang med umlauts under Windows

Filer på webservere bør altid gemmes uden mellemrum (ikke "dette er et billede.jpg"), uden umlauter eller specialtegn (ikke "fodbold.jpg"), uden omvendte skråstreger (ikke "arbejde\bil.jpg") og med små bogstaver (ikke "test.JPG"). For nylig måtte jeg dog i forbindelse med et klientprojekt tilgå og behandle et stort antal foruddefinerede filer med vilkårlige filnavne.


Linux-systemer giver som standard adgang til filer med umlauts og specialtegn, så her skal ingen specielle funktioner overvejes. Det ser helt anderledes ud på Windows-systemer: Her skal du bruge nogle tricks og trykke på COM-grænsefladen. Først og fremmest inkluderer du den krævede udvidelse i php.ini

[COM_DOT_NET]
extension = php_com_dotnet.dll

en. Nu bruges den meget hjælpsomme hjælperklasse WinfsUtf8 , hvilket i høj grad forenkler adgangen til COM-objekterne og kortlægger næsten alle PHP-funktioner, der påvirker filer. Efter at have integreret filen med

require_once('WinfsUtf8.php');

man har alle mulighederne for filadgang, for eksempel resultater

file_exists('ä.jpg');

forkert falsk, mens

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

returnerer sandt.

Tilbage