Как получить только изображения с помощью scandir в PHP?

Есть ли любой способ получить только изображения с расширениями jpeg, png, gif и т.д. при использовании

$dir    = '/tmp';
$files1 = scandir($dir);
38
задан Madan Sapkota 29 April 2015 в 16:12
поделиться

3 ответа

Вы можете использовать glob

$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);

Если вам нужно, чтобы это было без учета регистра, вы можете использовать DirectoryIterator в сочетании с RegexIterator или передать результат scandir в array_map и использовать обратный вызов, который отфильтрует все нежелательные расширения. Будете ли вы использовать strpos, fnmatch или pathinfo для получения расширения - решать вам.

85
ответ дан 27 November 2019 в 03:00
поделиться

Я бы пролистал файлы и посмотрел на их расширения:

$dir = '/tmp';
$dh  = opendir($dir);
while (false !== ($fileName = readdir($dh))) {
    $ext = substr($fileName, strrpos($fileName, '.') + 1);
    if(in_array($ext, array("jpg","jpeg","png","gif")))
        $files1[] = $fileName;
}
closedir($dh);
14
ответ дан 27 November 2019 в 03:00
поделиться

После этого вы можете просмотреть полученный массив и отбросить файлы, не соответствующие вашим критериям.

scandir не имеет нужной вам функциональности.

6
ответ дан 27 November 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: