我有一个递归目录迭代器来从目录中选择文件.SKIP_DOTS允许我忽略'.' 和'..'元素,但我希望能够忽略'__MACOSX'目录和另一个其他隐藏文件,如'.cache.php'
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$all_files = new RecursiveIteratorIterator($iterator);
Run Code Online (Sandbox Code Playgroud)
我希望PHP手册中有一些东西- FilesystemIterator SetFlags,但似乎没有.
Kik*_*ksy 10
感谢@Sven和PHP Docs:
$iterator = new RecursiveDirectoryIterator($directory);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
$filter = new MyRecursiveFilterIterator($iterator);
$all_files = new RecursiveIteratorIterator($filter,RecursiveIteratorIterator::SELF_FIRST);
Run Code Online (Sandbox Code Playgroud)
class MyRecursiveFilterIterator extends RecursiveFilterIterator {
public static $FILTERS = array(
'__MACOSX',
);
public function accept() {
return !in_array(
$this->current()->getFilename(),
self::$FILTERS,
true
);
}
}
Run Code Online (Sandbox Code Playgroud)
根据PHP手册中的注释