PHP: Filåtkomst med paraplyer under Windows

Filer på webbservrar ska alltid vara utan mellanslag (inte "detta är en bild.jpg"), utan paraplyer eller specialtecken (inte "football.jpg"), utan bakåtvända snedstreck (inte "Arbeit \ Auto.jpg") och i gemener (inte "" test.JPG "). Nyligen var jag dock tvungen att komma åt och bearbeta ett stort antal filer med vilket filnamn som helst för ett kundprojekt.


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.

Tillbaka