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

Php 递归目录迭代器结果:从结果路径中筛选出特定字符,php,arrays,recursion,directory,Php,Arrays,Recursion,Directory,我试图递归地返回指定目录中的所有唯一实例路径 我正在使用递归目录迭代器。我还想省略其中包含“.”的任何路径实例,这正是我遇到问题的地方 以下是我的测试: <?php function test($dir){ $dirArray = []; // the array to store dirs $path = realpath($dir); $dirs = new RecursiveDirectoryIterator($path, FilesystemItera

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

我正在使用递归目录迭代器。我还想省略其中包含“.”的任何路径实例,这正是我遇到问题的地方

以下是我的测试:

<?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');

?>


这段代码几乎满足了我的需要。它返回所有唯一的目录,但包括路径名中带有“.”的目录。

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

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

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

,您是否有一个存在该问题的示例目录名?可能像
path/to/directory.io/yeah
。所以这一个不应该包括在内?这都是git的东西,所以,
/blah/.git/blah/blah
@jml不,它永远不会与真的相比。它不是
0-n
就是
false
。位置
0-到任何数字(如果存在)<代码>错误
如果未找到