您可能可以通过自己创建一个FilterIterator
检查子目录的条件来添加条件。以下使用示例演示了如何列出我在 git 下的文件夹。
$address
是您在问题中已有的内容,过滤器只是添加到周围:
$filtered = new SubDirFilter($address, '.git');
foreach ($filtered as $file) {
echo $filtered->getSubPathname(), "\n";
}
输出:
Artax
CgiHttpKernel
CgiHttpKernel/vendor/silex/silex
...
composer
composer-setup
CVBacklog
...
什么不是。使用的这个过滤器迭代器相对简单,对于每个条目,它都会检查它是否具有该子目录。启用此功能(已启用)很重要,FilesystemIterator::SKIP_DOTS
否则您将得到重复的结果(表示相同的目录):
class SubDirFilter extends FilterIterator
{
private $subDir;
public function __construct(Iterator $iterator, $subDir) {
$this->subDir = $subDir;
parent::__construct($iterator);
}
public function accept() {
return is_dir($this->current() . "/" . $this->subDir);
}
}