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

前端之家收集整理的这篇文章主要介绍了PHP递归目录迭代器 – 忽略某些文件.前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个递归目录迭代器来从目录中选择文件. SKIP_DOTS允许我忽略’.’和’..’元素,但我希望能够忽略’__MACOSX’目录和另一个其他隐藏文件,如’.cache.PHP
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$all_files  = new RecursiveIteratorIterator($iterator);

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

我希望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

猜你在找的PHP相关文章