PHP: Fájlhozzáférés umlautokkal Windows alatt

A webszervereken lévő fájlokat mindig szóközök nélkül (nem "ez egy kép.jpg"), ékezetek vagy speciális karakterek nélkül (nem "foci.jpg"), perjelek nélkül (nem "munka\autó.jpg") és kisbetűkkel (nem "teszt.JPG") kell tárolni. Nemrégiben azonban egy kliensprojekthez nagyszámú előre definiált fájlhoz kellett hozzáférnem és feldolgoznom tetszőleges fájlnevekkel.


A Linux rendszerek alapértelmezés szerint lehetővé teszik az umlautokat és speciális karaktereket tartalmazó fájlokhoz való hozzáférést, így itt semmilyen speciális funkciót nem kell figyelembe venni. Teljesen másképp néz ki a Windows rendszereken: Itt néhány trükköt kell használnia, és be kell érnie a COM felületre. Először is, a php.ini fájlba foglalja a szükséges kiterjesztést

[COM_DOT_NET]
extension = php_com_dotnet.dll

egy. Most a nagyon hasznos WinfsUtf8 segédosztályt használják, amely jelentősen leegyszerűsíti a COM-objektumokhoz való hozzáférést, és feltérképezi a fájlokat érintő összes PHP-funkciót. Miután integrálta a fájlt a

require_once('WinfsUtf8.php');

az egyik lehetősége van a fájlok elérésére, például eredmények

file_exists('ä.jpg');

helytelenül hamis, míg

Patchwork\PHP\Override\WinfsUtf8::file_exists('ä.jpg');

true-val tér vissza.

Vissza