PHP: Filadgang med umlauts under Windows

Filer på webservere skal altid være uden mellemrum (ikke "dette er et billede.jpg"), uden umlauter eller specialtegn (ikke "football.jpg"), uden tilbageslag (ikke "Arbeit \ Auto.jpg") og med små bogstaver (ikke " test.JPG "). For nylig var jeg dog nødt til at få adgang til og behandle et stort antal forudindstillede filer med ethvert filnavn til et kundeprojekt.


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