递归目录迭代器结果:从结果路径中筛选出特定的字符


recursive directory iterator results: filter out specific characters from resultant paths

我试图递归地返回指定目录中的所有唯一实例路径。

我正在使用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');
?>

这个代码几乎可以满足我的需要。它返回所有唯一的dirs,但包括带有"的dirs在路径名中。

只需在里面添加另一个检查器,并尝试使用->getPathname()

if($object->isDir() && strpos($object->getPathname(), '.') === false) {
    // do some stuff
}

这基本上意味着,如果这是一个目录,并且路径名不包含.