Как прочитать имена файлов, сохраненные как utf8 (урду / арабские символы) в php?

Пожалуйста, ведите меня:-
1. Как прочитать / сохранить utf8 символов имен файлов, сохраненных на урду / арабском языке. Это сработало у меня $ file_utf8 = iconv ("Windows-1256", "utf-8", $ filepath);, но не читает все имена файлов, пропуская более 80 %. Мне тоже нужно

2. отсортировать список файлов (имен файлов) по времени создания и размеру.

3. Сохраните отсортированный список в текстовом файле utf-8, решив эту часть с помощью этого кода: Проблема остается в том, что ВСЕ имена файлов не читаются

$myDr = fopen("list.txt", "w") or die("Unable to open file!");                              

foreach ($files as $f) 
    { 
    $path1 = iconv( "Windows-1256", "utf-8", $f ); 
    echo  $zz . " . " . $path1, "<br>\n"; 


        $txtpoet2 = "$path1 \r\n" ; 
        fwrite($myDr, $txtpoet2);                                           



    $zz++; 
    } 
fclose($myDr);

У меня есть много изображений в каталогах и подкаталогах, где я сохранил имя файла на языке урду. "ترے عشق کی انتہا چاہتا ہوں. Png". Я хочу сделать список всех каталогов и подкаталогов и сохранить в текстовом файле Unicode. Я не могу прочитать символы урду в php- кодировании.

Моя среда - Windows 7 ( 64-разрядная), использующая XAMPP - apache в качестве сервера. Я пробовал C++, но не смог найти решение.

Я использую следующий PHP для чтения всех файлов в подкаталогах:-

<?php 
header('Content-type: text/html; charset=utf-8');

function listdir($dir='.') 
    { 
    if (!is_dir($dir)) 
        { 
        return false; 
        } 

    $files = array(); 
    listdiraux($dir, $files); 

    return $files; 
    } 

function listdiraux($dir, &$files) 
    { 
    $handle = opendir($dir); 
    while ( false !==($file = readdir($handle)) ) 
        { 
        if ($file == '.' || $file == '..') 
            { 
            continue; 
            } 
        $filepath = $dir == '.' ? $file : $dir . '/' . $file; 
        if (is_link($filepath))             continue; 
        if (is_file($filepath))             
            { 
            $files[] = $filepath;  

        else if (is_dir($filepath))         listdiraux($filepath, $files); 
        } 
    closedir($handle); 
    } 

$files = listdir('.'); 
sort($files, SORT_LOCALE_STRING); 
$zz = 0; 
foreach ($files as $f) 
    { 

    echo  $zz . " . " . $f, "<br>\n"; 
    $zz++; 

} 

?>

Источник этого кода - http://php.net/manual/en/function.readdir.php.

Благодарю всех вас.

1 ответ

Я нашел решение для языка урду, на котором говорят более миллиарда человек, в основном Индия, Пакистан, Иран, Афганистан. В Индии используется его диалект, но другой сценарий / символы.
Моя благодарность всем членам stackru

Вы найдете много улучшений в www.rwpmall.com/urdu/poetry

Мне нужна была эта строка в коде

**

$ file_utf8 = iconv ("Windows-1256", "utf-8", $ sub);

**

Я публикую полное решение для помощи другим:

<?php 
$dir = "."; 

function ReadFolderDirectory($dir) 
    { 
    $listDir = array(); 
    if($handler = opendir($dir)) { 
    while (($sub = readdir($handler)) !== FALSE) 
            { 
            if ($sub != "." && $sub != ".." && $sub != "Thumb.db") 
                { 
                if(is_file($dir."/".$sub)) 
                    { 
                    $file_utf8 = iconv( "Windows-1256", "utf-8", $sub );
                    $listDir[] = $sub; 
                    //  echo  $file_utf8 ."<br>";
                    echo  $dir."/".$file_utf8 ."<br>";
                    }
                elseif(is_dir($dir."/".$sub))
                    {
                    echo "  New Sub Directory :  >>>>     ". $dir."/".$sub . " <br> "; 
                    $listDir[$sub] = ReadFolderDirectory($dir."/".$sub); 
                    } 
                } 
            }    
            closedir($handler); 
        } 

        return $listDir;    
    } 
  ReadFolderDirectory($dir);   
?>

С уважением.
Пусть Бог даст нам мудрость, чтобы сделать эту Землю лучшим местом для Человечества.

Другие вопросы по тегам