PHP: bestandstoegang met umlauts onder Windows

Bestanden op webservers moeten altijd zonder spaties zijn (niet "dit is een afbeelding.jpg"), zonder umlauts of speciale tekens (niet "football.jpg"), zonder backslashes (niet "Arbeit \ Auto.jpg") en in kleine letters (niet "" test.JPG "). Onlangs moest ik echter een groot aantal bestanden met elke bestandsnaam openen en verwerken voor een klantproject.


Linux-systemen bieden standaard toegang tot bestanden met umlauten en speciale tekens, zodat hier geen rekening hoeft te worden gehouden met speciale functies. Het ziet er heel anders uit op Windows-systemen: hier moet je wat trucs gebruiken en de COM-interface gebruiken. Allereerst neemt u de vereiste extensie op in php.ini

[COM_DOT_NET]
extension = php_com_dotnet.dll

een. Nu wordt de zeer behulpzame helper-klasse WinfsUtf8 gebruikt, die de toegang tot de COM-objecten aanzienlijk vereenvoudigt en bijna alle PHP-functies die van invloed zijn op bestanden, in kaart brengt. Na integratie van het bestand met

require_once('WinfsUtf8.php');

men heeft alle mogelijkheden van bestandstoegang, bijvoorbeeld resultaten

file_exists('ä.jpg');

onjuist onjuist, terwijl

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

geeft true terug.

Terug