PHP: acces la fișiere cu umlauts sub Windows

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.

Înapoi