Filer på webbservrar bör alltid lagras utan mellanslag (inte "detta är en bild.jpg"), utan omljud eller specialtecken (inte "fotboll.jpg"), utan bakåtsnedstreck (inte "arbete\bil.jpg") och med gemener (inte "test.JPG"). Nyligen var jag dock tvungen att komma åt och bearbeta ett stort antal fördefinierade filer med godtyckliga filnamn för ett klientprojekt.
Linux-system tillåter åtkomst till filer med paraplyer och specialtecken som standard, så att inga speciella funktioner behöver beaktas här. Det ser helt annorlunda ut på Windows-system: Här måste du använda några knep och knacka på COM-gränssnittet. Först och främst inkluderar du den nödvändiga förlängningen i php.ini
[COM_DOT_NET] extension = php_com_dotnet.dll
ett. Nu används den mycket hjälpsamma hjälpklassen WinfsUtf8 , vilket förenklar åtkomst till COM-objekten kraftigt och kartlägger nästan alla PHP-funktioner som påverkar filer. Efter att ha integrerat filen med
require_once('WinfsUtf8.php');
man har alla möjligheter till filåtkomst, till exempel resultat
file_exists('ä.jpg');
felaktigt falsk, medan
Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');
returnerar sant.