阿拉伯语与scandir php功能

时间:2013-08-18 07:40:28

标签: php html arabic

当获取php的scandir()函数的输出时,我有一些文件夹,其中名称是阿拉伯语。问题是输出为“???????”以显示阿拉伯字母。

这是我的一段代码:

<?php
$dir    = '../dirs';
$files1 = scandir($dir);
foreach($files1 as $key => $value)
{
    if($value != '.' && $value != '..' && $value != '')
    echo "<option>".$value."</option>";
}
?>

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

你应该使用     您的HTML页面中<meta charset="utf-8"> 另外看看这个替代方案,这可以解决问题:

$dir = "/tmp";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);


也可以使用命令行运行脚本,这可能会给你一些线索。
我不知道这个是否有效。但无论如何它是:

if(PHP_OS == "WIN")
 $out = system("dir");
else
 $out = system("ls");

echo $out;


查看结果以确定问题是否仍然存在

答案 1 :(得分:1)

在PHP5中,我还没有找到一种方法来处理文件名中包含扩展字符的文件。我被认为这是PHP本身的一个问题,这就是为什么版本6需要很长时间才能开发出来的原因。 (PHP6计划具有完整的Unicode支持。)

读取和写入内容中包含扩展字符的文件绝对没有问题,但文件名本身不能包含它们。这是目前我个人没有找到解决方法的唯一限制。幸运的是,它通常不是问题,因为Web安全文件名当前不包含导致问题的扩展字符。

答案 2 :(得分:0)

你可以尝试一下!

 $files1 = scandir($dir);  
    foreach ($files1 as $file) {
       echo  utf8_encode($file);
       echo '<br>';
    }