递归目录迭代器结果:从结果路径中过滤掉特定字符

时间:2014-11-11 03:16:23

标签: php arrays recursion directory

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

我正在使用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;在路径名称中。

1 个答案:

答案 0 :(得分:1)

只需添加另一个检查器,然后尝试使用->getPathname()

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

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