我试图以递归方式返回指定目录中的所有唯一实例路径。
我正在使用RecursiveDirectoryIterator
。我还想省略包含'的路径的任何实例。'在他们身上,这是我遇到麻烦的地方。
这是我作为考试所做的事情:
<?php
function test($dir){
$dirArray = []; // the array to store dirs
$path = realpath($dir);
$dirs = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
$objects = new RecursiveIteratorIterator($dirs, RecursiveIteratorIterator::SELF_FIRST);
// loop through all objects and store names in dirArray[]
foreach($objects as $name => $object){
if($object->isDir() && strpos($object->getBasename(), '.') !== true) {
$dirArray[] = $name;
echo "test: " . $object->getBasename() . "\n";
}
}
print_r($dirArray);
}
test('/some/dir');
?>
这段代码几乎做我需要的。它返回所有唯一的目录,但包括那些带有&#39;&#39;在路径名称中。
答案 0 :(得分:1)
只需添加另一个检查器,然后尝试使用->getPathname()
:
if($object->isDir() && strpos($object->getPathname(), '.') === false) {
// do some stuff
}
这基本上意味着,如果这是一个目录,如果路径名不包含.