Получить изображения в каталоге и подкаталоге с помощью Glob

У меня есть PHP-скрипт, написанный, чтобы захватить все изображения в определенном каталоге и отобразить их, хотя я хочу иметь возможность отображать изображения также в подкаталогах указанного каталога.

Так, например, прямо сейчас мой скрипт получает только следующие изображения

добавления / prevImgs / 145323.png

добавления / prevImgs / 276531.png

Где id хочет получить следующее

добавления / prevImgs / 145323.png

добавления / prevImgs / 276531.png

добавления / prevImgs / dir1 / 12323.png

добавления / prevImgs / dir2 / 212331.png

Мой текущий скрипт следующий

<?php // Directory Path Of Library Preview Images // $dirname = "uploads/prevImgs/"; $images = glob("{$dirname}*.*"); foreach($images as $image) { echo '<img src="'.$image.'" /><br />'; } ?> 

Огромное спасибо заранее!

Вы можете скомпилировать RecursiveDirectoryIterator и RecursiveIteratorIterator, чтобы получить эффект, который вы ищете:

 $rdi = new RecursiveDirectoryIterator("uploads/prevImgs/"); $it = new RecursiveIteratorIterator($rdi); foreach($it as $oneThing) if (is_file($oneThing)) echo '<img src="'.$oneThing.'" /><br />'; 

Я знаю, кажется контр-интуитивным, что вам нужно взять RecursiveDirectoryIterator и выложить еще один итератор поверх него, чтобы он работал. Документация в этой области может быть лучше.

Я могу предложить использовать RecursiveDirectoryIterator для создания класса для итерации через файлы (под) каталогов и его файлов. Вместе с одним из рекурсивных итераторов фильтра php предлагает вы можете возвращать только файлы изображений.

Существует также GlobIterator, но я не уверен, что он также выполняет рекурсивные итерации.