加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP递归目录迭代器 – 忽略某些文件.

发布时间:2020-05-25 08:34:41 所属栏目:PHP 来源:互联网
导读:我有一个递归目录迭代器来从目录中选择文件. SKIP_DOTS允许我忽略’.’和’..’元素,但我希望能够忽略’__MACOSX’目录和另一个其他隐藏文件,如’.cache.php’ $iterator = new RecursiveDirectoryIterator($directory);$iterator-setFlags(RecursiveDirector

我有一个递归目录迭代器来从目录中选择文件. SKIP_DOTS允许我忽略’.’和’..’元素,但我希望能够忽略’__MACOSX’目录和另一个其他隐藏文件,如’.cache.php’

$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$all_files  = new RecursiveIteratorIterator($iterator);

还有其他答案here和here,但只是想知道是否有更清洁的方式?

我希望PHP Manual – FilesystemIterator SetFlags会有什么东西,但似乎没有.

感谢@Sven和PHP Docs:
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);

$filter = new MyRecursiveFilterIterator($iterator);

$all_files  = new RecursiveIteratorIterator($filter,RecursiveIteratorIterator::SELF_FIRST);

然后延长RecursiveFilterIterator

class MyRecursiveFilterIterator extends RecursiveFilterIterator {

    public static $FILTERS = array(
        '__MACOSX',);

    public function accept() {
        return !in_array(
            $this->current()->getFilename(),self::$FILTERS,true
        );
    }

}

根据评论In the PHP Manual

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读