Intereting Posts
как я могу получить все опции в нескольких вариантах, используя PHP? Флажок внутри флажка в раскрывающемся списке поддержание связи db на разных страницах Рекурсивная php-функция, которая превращает вложенный массив во вложенные html-блоки preg_replace: добавить номер после обратной ссылки Переименование дубликатов строк в MySQL Версии кода кодирования PHP; в переключателе / ​​корпусе PHP simplexml: почему xpath перестает работать? Как быстро выбрать 3 случайные записи из таблицы 30k MySQL с фильтром где-то одним запросом? Заголовки $ _SERVER отсутствуют в PHP, но присутствуют в Python Symfony2: отправьте запрос HTTP как изменить размер bmp, tiff image с помощью gd-библиотеки? а также упомянуть о imagemagick, который хорош в использовании .htaccess условие – действие зависит от типа файла скрыть расширение .php в url mod_rewrite Параметры перенаправления Mercurial (HG): имя пользователя и пароль

Лучший способ получить файлы из каталога, отфильтрованного определенным расширением в php

Возможный дубликат:
Список конкретных файлов 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); }