بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
مشکل scandir بصورت UTF8
با سلام
دوستان من سعی دارم آرایه ایی از فایل های موجود در فولدر رو بگیرم ، اما برای فایل هایی که فارسی هستند بصورت ناخوانا اجرا میشه !
$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 پاسخ وجود دارد.
پاسخ به سوال
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 از پوشه گرفته شده و در صفحه نمايش داده شده:
دوست عزیز اگر اطلاع داشته باشید تا ورژن 6، PHP از یونیکد بصورت رسمی پشتیبانی نمیکنه. به علاوه بهدلایلی از ورژن 6 (که ورژنی هست که یونیکد اضافه شده) اصولا استفاده نمیشه. ورژن 7 هم هنوز درحالت بتا هست. درکل از 6 سال پیش تا الان تغییر خاصی در PHP صورت نگرفته و هنوز اکثرا از ورژنهای 5 استفاده میکنند. اینکه برای شما این کد کار میکنه شاید به این دلیل هست که هاستی که ازش استفاده میکنید زودتر ورژن PHP رو آپدیت کرده یا اینکه از نرم افزاری (مثل نسخه آخر ومپ) استفاده میکنید که از نسخه بتای PHP 7 استفاده میکنه. (10 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .