开发者

find recursive specific file

I'm trying to find all the files that called "testunit.php". In addition i want to cut the first 23 chars of the 开发者_JAVA技巧string.

I tried this but this is not working.I get all the files.

$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>");

}

Thank you!


see if glob helps you


Try

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)
        );
    }
}

Usage (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;
}

Disclaimer: I wasn't in the mood to mock the filesystem or setup the required test files, so the above might need a little tweaking to work with the filesystem. I only tested with an ArrayIterator but there shouldn't be much to do if the above produces errors.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜