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.