Fișierele de pe serverele web ar trebui stocate întotdeauna fără spații (nu „aceasta este o imagine.jpg”), fără umlaute sau caractere speciale (nu „football.jpg”), fără bare oblice inversate (nu „work\car.jpg”) și cu litere mici (nu „test.JPG”). Recent, însă, pentru un proiect client, a trebuit să accesez și să procesez un număr mare de fișiere predefinite cu nume arbitrare.
Sistemele Linux permit accesul la fișiere cu umlauturi și caractere speciale în mod implicit, astfel încât nu trebuie luate în considerare caracteristici speciale aici. Arată complet diferit pe sistemele Windows: aici trebuie să folosiți câteva trucuri și să atingeți interfața COM. În primul rând, includeți extensia necesară în php.ini
[COM_DOT_NET] extension = php_com_dotnet.dll
unu. Acum este folosită clasa de ajutor WinfsUtf8 foarte utilă, care simplifică foarte mult accesul la obiectele COM și mapează aproape toate funcțiile PHP care afectează fișierele. După integrarea fișierului cu
require_once('WinfsUtf8.php');
unul are toate posibilitățile de acces la fișier, de exemplu rezultate
file_exists('ä.jpg');
incorect fals, întrucât
Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');
revine adevărat.