فایلها روی سرورهای وب همیشه باید بدون فاصله (نه "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');
درست برگردد