Возможный дубликат:
Список конкретных файлов PHP в каталоге
используйте php scandir ($ dir) и получите только изображения!
Так что прямо сейчас у меня есть каталог, и я получаю список файлов
$dir_f = "whatever/random/"; $files = scandir($dir_f);
Это, однако, извлекает каждый файл в каталоге. Как я могу извлечь только файлы с определенным расширением, например .ini, наиболее эффективным способом.
PHP имеет отличную функцию, которая поможет вам захватывать только нужные вам файлы. Его называемый glob()
glob – поиск путей, соответствующих шаблону
Вот пример использования –
$files = array(); foreach (glob("/path/to/folder/*.txt") as $file) { $files[] = $file; }
Справка –
glob()
Функция glob()
PHP позволяет указать шаблон для поиска.
Если вы хотите найти более одного расширения, то preg_grep()
является альтернативой фильтрации:
$files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
Хотя glob
имеет аналогичный дополнительный синтаксис. Это в основном имеет смысл, если у вас есть дополнительные условия, добавьте флаг ~i
для нечувствительности к регистру или можете фильтровать комбинированные списки.
Вы можете попробовать использовать GlobIterator
$iterator = new \GlobIterator(__DIR__ . '/*.txt', FilesystemIterator::KEY_AS_FILENAME); $array = iterator_to_array($iterator); var_dump($array)
glob ($ pattern, $ flags)
<?php foreach (glob("*.txt") as $filename) { echo "$filename size " . filesize($filename) . "\n"; } ?>
попробуй это
//path to directory to scan $directory = "../file/"; //get all image files with a .txt extension. $file= glob($directory . "*.txt "); //print each file name foreach($file as $filew) { echo $filew; $files[] = $filew; // to create the array }
не тестировали регулярное выражение, но что-то вроде этого:
if ($handle = opendir('/file/path')) { while (false !== ($entry = readdir($handle))) { if (preg_match('/\.txt$/', $entry)) { echo "$entry\n"; } } closedir($handle); }