PHP: Windows altında umlauts ile dosya erişimi

Web sunucularındaki dosyalar boşluk içermemelidir ("bu bir picture.jpg" değil), umlautlar veya özel karakterler ("football.jpg" değil), ters eğik çizgi ("Work \ Auto.jpg" değil) ve küçük harf (" test.JPG "). Ancak son zamanlarda, bir müşteri projesi için herhangi bir dosya adında çok sayıda önceden tanımlanmış dosyaya erişmek ve bunları işlemek zorunda kaldım.


Linux sistemleri, standart olarak umlaut'lara ve özel karakterlere sahip dosyalara erişime izin verir, böylece burada hiçbir özel özellik dikkate alınmaz. Windows sistemlerinde durum tamamen farklı: Burada bazı numaralar yapmanız ve COM arayüzüne dokunmanız gerekiyor. Her şeyden önce, gerekli uzantıyı php.ini'ye bağlarsınız

[COM_DOT_NET]
extension = php_com_dotnet.dll

a. Şimdi çok yardımcı yardımcı sınıf WinfsUtf8 kullanılır, bu da COM nesnelerine erişimi büyük ölçüde basitleştirir ve dosyaları etkileyen neredeyse tüm PHP işlevlerini eşler. Dosyayı

require_once('WinfsUtf8.php');

örneğin tüm dosya erişimi olanaklarına sahipsiniz

file_exists('ä.jpg');

yanlış yanlışken

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

gerçek sonuçlar.

Geri