Вы, вероятно, можно добавить критерии, создавая себе 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);
}
}
разъяснений: вы хотите/путь/к в адрес или/путь/в/TMP. «Это» в «положить его в $ address» несколько неоднозначно. – Gordon
путь/to/tmp адрес – wikinevis
@wikinevis в среднем '/ path/to' недопустим, потому что он имеет' tmp' в пути? потому что 'путь/to/tmp' также показывает, что в path/to /' есть папка в нем ..... Может ли обновить ваш ответ с образцом вывода – Baba