How to get only images using scandir in PHP?
You can use glob
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
If you need this to be case-insensitive, you could use a DirectoryIterator
in combination with a RegexIterator
or pass the result of scandir
to array_map
and use a callback that filters any unwanted extensions. Whether you use strpos
, fnmatch
or pathinfo
to get the extension is up to you.
The actual question was using scandir and the answers end up in glob. There is a huge difference in both where blob considerably heavy. The same filtering can be done with scandir using the following code:
$images = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
I hope this would help somebody.