آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل scandir بصورت UTF8

Criss  10 سال پیش  10 سال پیش
0 0

با سلام

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

$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
+1 0
متاسفانه این فانکشن کاراکترهای غیر انگلیسی رو پشتیبانی نمی‌کنه لینک (10 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Criss  10 سال پیش
0 0

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

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

پاسخ به سوال 
Dadparvar  10 سال پیش
0 0

سلام

بعيد ميدونم در حال حاضر مشکلي در 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 از پوشه گرفته شده و در صفحه نمايش داده شده:

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

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