我正在使用PHP DirectoryIterator创建模块以获取指定路径中的目录列表。有例子:
class GardenUtils
{
public static function getPath()
{
return public_path() . "/images/garden/";
}
public static function getAlbumDirectories()
{
$directories = [];
$directoryIterator = new DirectoryIterator(self::getPath());
foreach ($directoryIterator as $directory) {
if (!$directory->isDot() && $directory->isDir()) {
$directories[] = FileUtil::normalizeFileName($directory->getFilename());
}
}
return $directories;
}
}
我的问题是由于数组中的扫描缺少了一些目录。例如 - 12放在目录中,并落入数组10.如果我删除$directory->isDir()
条件,将扫描所有文件。另外,如果我调用$directory->getType()
,脚本会因RuntimeException而崩溃。
所有目录都包含俄语字母和变音符号。
正确扫描的名称示例:Аквилегия (Aquilégia)
导致问题的名称示例:Хоста (Hósta) (h5-30)
使用俄语语言环境在Windows 7上使用PHP 5.6.12重现该问题。 Linux系统上的PHP 5.5.25正常工作。
我该如何解决?