递归查找特定文件

发布于 2024-10-06 16:34:09 字数 422 浏览 1 评论 0原文

我试图找到所有名为“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>");

}

谢谢你!

I'm trying to find all the files that called "testunit.php".
In addition i want to cut the first 23 chars of the 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!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一曲爱恨情仇 2024-10-13 16:34:09

看看 glob 是否对您有帮助

see if glob helps you

帥小哥 2024-10-13 16:34:09

尝试

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

用法(键盘(删节示例)):

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

免责声明:我不是'没有心情模拟文件系统或设置所需的测试文件,因此上面的内容可能需要一些调整才能与文件系统一起使用。我只使用 ArrayIterator 进行了测试,但如果上述方法产生错误,则不需要做太多事情。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文