PHP: دسترسی به پرونده با umlauts تحت ویندوز

فایل‌ها روی سرورهای وب همیشه باید بدون فاصله (نه "this is an image.jpg")، بدون علامت ممیز یا کاراکترهای ویژه (نه "football.jpg")، بدون بک‌اسلش (نه "work\car.jpg") و با حروف کوچک (نه "test.JPG") ذخیره شوند. با این حال، اخیراً برای یک پروژه مشتری، مجبور شدم به تعداد زیادی فایل از پیش تعریف شده با نام‌های دلخواه دسترسی پیدا کنم و آنها را پردازش کنم.


سیستم های لینوکس به طور پیش فرض امکان دسترسی به پرونده های دارای umlaut و نویسه های خاص را دارند ، بنابراین در اینجا نیازی به بررسی ویژگی های خاصی نیست. در سیستم های ویندوز کاملاً متفاوت به نظر می رسد: در اینجا شما باید از برخی ترفندها استفاده کرده و به رابط COM ضربه بزنید. اول از همه ، شما پسوند مورد نیاز را در php.ini قرار می دهید

[COM_DOT_NET]
extension = php_com_dotnet.dll

یکی اکنون از کلاس کمکی بسیار مفید WinfsUtf8 استفاده شده است که دسترسی به اشیا COM COM را بسیار ساده می کند و تقریباً تمام توابع PHP که روی پرونده ها تأثیر می گذارد را ترسیم می کند. پس از ادغام پرونده با

require_once('WinfsUtf8.php');

یکی از همه امکان دسترسی به پرونده ، به عنوان مثال نتایج را دارد

file_exists('ä.jpg');

نادرست غلط است ، در حالی که

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

درست برگردد

بازگشت