无法从Windows文件系统中读取UTF-8文件名(主要的Windows语言为英语)
<?php
$path_to_read = 'D:\music';
class AudioFilterIterator extends FilterIterator
{
public function accept()
{
return (strpos(parent::current(), '.mp3'));
}
}
$object = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path_to_read));
$iterator = new AudioFilterIterator($object);
echo "<pre>";
$files = array();
foreach($iterator as $file)
{
echo $file . "\n";
}
所以,举个例子,我有一个名为“10 Hört auf.mp3”的文件,但输出结果是“10 Hort auf.mp3”。
我该如何解决这个问题?
readdir()
和preg_match()
呢?这段代码对于它所做的事情来说相当沉重。 - user1544337<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
。 - tuxnanireaddir()
需要您自己实现递归遍历目录结构的逻辑,并且在使用正则表达式匹配文件名时,简单的strpos()
即可完成,而使用正则表达式会增加不必要的开销。我认为 OP 提供的示例代码轻量且是我推荐的方法。 - nickb