找到递归的特定文件

时间:2010-12-09 14:37:21

标签: php recursion

我正在尝试查找所有名为“testunit.php”的文件。 另外我想剪掉字符串的前23个字符。

我尝试了这个,但这不起作用。我得到了所有文件。

$it = new RecursiveDirectoryIterator($parent);
$display = Array ( 'testunit.php');
foreach (new RecursiveIteratorIterator($it) as $file=>$cur) {
{
if ( In_Array ( $cur, $display ) == true )
               $file = substr($cur, 23)
               fwrite($fh,"<file>$file</file>");

}

谢谢!

2 个答案:

答案 0 :(得分:1)

查看glob是否可以帮助您

答案 1 :(得分:0)

尝试

class TestUnitIterator extends FilterIterator
{
    public function accept()
    {
        return (FALSE !== strpos(
            $this->getInnerIterator()->current(),
            'testunit.php'
        ));
    }
    public function current()
    {
        return sprintf(
            '<file>%s</file>',
            substr($this->getInnerIterator()->current(), 23)
        );
    }
}

用法(codepad (abridged example)):

$iterator = new TestUnitIterator(
    new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator(
            '/path/to/iterate/over',
            FilesystemIterator::CURRENT_AS_PATHNAME
        )
    )
);
foreach ($iterator as $file) {
    echo $file, PHP_EOL;
}

免责声明:我没有心情模仿文件系统或设置所需的测试文件,所以上面可能需要稍微调整才能使用文件系统。我只使用ArrayIterator进行了测试,但如果上述操作产生错误,则应该没什么可做的。