Перекрестная публикация примера (также в этом вопросе ) -
DirectoryIterator
и LimitIterator
- мои новые лучшие друзья, хотя glob
, кажется, легче фильтрует.Вы также можете написать пользовательский FilterIterator
.Требуется PHP> 5.1, я думаю.
Без предварительного фильтра:
$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
Предварительный фильтр Glob:
$dir_glob = $dir . '/*.{jpg,gif,png}';
$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
Затем сделайте свое дело:
foreach ($paginated as $file) { ... }
Обратите внимание, что в случае примера DirectoryIterator
, $file
будет экземпляром SplFileInfo
тогда как glob
пример - это просто путь к диску.