بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل scandir بصورت UTF8

مدیریت گفتگو
Criss 10 سال پیش
آخرین تغییر: 10 سال پیش

با سلام

دوستان من سعی دارم آرایه ایی از فایل های موجود در فولدر رو بگیرم ، اما برای فایل هایی که فارسی هستند بصورت ناخوانا اجرا میشه !

$root =  getcwd();

$videoPath = $root.'/video';
$videoNames = array_diff(scandir($videoPath), array('.', '..'));

echo "<pre>";
print_r($videoNames);
echo "</pre>";

$array = array();
$array["all_object"] = array(
"video" => $videoNames,
);

خروجی بصورت زیر میشه :

 Array
(
    [2] => Facebook.mp4
    [3] => [�����] �� 100 ����� �������� ���� �� ��� 2016 ���� ����.mp4
)


{"all_object":{"video":{"2":"Facebook.mp4","3":null}}}

 محتوای فولدر :

 [ویدیو] با 100 محصول خلاقانه‌ی برتر در سال 2016 آشنا شوید.mp4
Facebook.mp4

نظرات

Mr Mehdi 10 سال پیش
متاسفانه این فانکشن کاراکترهای غیر انگلیسی رو پشتیبانی نمی‌کنه لینک

پاسخ‌ها 2

Criss 10 سال پیش

این روش جواب نداد ،

پست رو ویراش  میکنم . . .

نظرات

Dadparvar 10 سال پیش

سلام

بعيد ميدونم در حال حاضر مشکلي در php در اين زمينه باشه (لينکي هم که درج کرده بوديد از داکيومنت php که گفته بودن از کاراکترهاي خاص پشتيباني نميکنه براي 6 سال پيش بود)

بنده در يکي از پروژه ها از همين دستور براي ليست کردن فايلهاي داخل پوشه استفاده کردم و بدرستي فايل هاي با نام فارسي را نشان داد. کل کد فايل php را درج ميکنم بخونيد. (اگر بقيه جاهاي سايت هم درست از يونيکد استفاده کرده باشند منطقا نبايد مشکلي باشه)

 <?php

class Dadparvar_profilemusic_Helper_Filelist {
public static function getProfilemusic() {

$path = Xenforo_Application::getInstance()->getRootDir() . '/styles/default/dadparvar/profilemusic/songs/';

if (!file_exists("$path" .'/'.func_get_arg(1))) {
mkdir("$path" .'/'.func_get_arg(1) , 0744);
}

$directoryList = scanDir($path.'/'.func_get_arg(1));
unset($directoryList[0]);
unset($directoryList[1]);
foreacH($directoryList as &$listEntry) {
$listEntry = str_replace(array('.mp3', '.ogg', '.wav'), '', $listEntry);
}
$directoryList = array_unique($directoryList);

return "[ '" . implode("' , '", $directoryList) . "' ]";
}
}
?>

همانطورکه در تصوير زير هم ميبينيد، نام فايل بصورت خودکار توسط php از پوشه گرفته شده و در صفحه نمايش داده شده:

نظرات

Mr Mehdi 10 سال پیش
دوست عزیز اگر اطلاع داشته باشید تا ورژن 6، PHP از یونیکد بصورت رسمی پشتیبانی نمی‌کنه. به علاوه به‌دلایلی از ورژن 6 (که ورژنی هست که یونیکد اضافه شده) اصولا استفاده نمی‌شه. ورژن 7 هم هنوز درحالت بتا هست. درکل از 6 سال پیش تا الان تغییر خاصی در PHP صورت نگرفته و هنوز اکثرا از ورژن‌های 5 استفاده می‌کنند. اینکه برای شما این کد کار می‌کنه شاید به این دلیل هست که هاستی که ازش استفاده می‌کنید زودتر ورژن PHP رو آپدیت کرده یا اینکه از نرم افزاری (مثل نسخه آخر ومپ) استفاده می‌کنید که از نسخه بتای PHP 7 استفاده می‌کنه.
Mr Mehdi 10 سال پیش
همونطور که معلومه از لینک پایین احتمال می‌دم از نسخه آخر ومپ استفاده می‌کنید.
Dadparvar 10 سال پیش
بنده از ومپ سرور 2.5 استفاده ميکنم و فکر ميکنم ماه ها پيش نصب کردم
Mr Mehdi 10 سال پیش
به هرصورت کار با زبان غیر انگلیسی روی این تابع روی PHP با نسخه‌ی پایین‌تر از 6 امکان‌پذیر نیست

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .