Best way to get files from a dir filtered by certain extension in php [duplicate]
Solution 1:
PHP has a great function to help you capture only the files you need. Its called glob()
glob - Find pathnames matching a pattern
Returns an array containing the matched files/directories, an empty array if no file matched or FALSE on error.
Here is an example usage -
$files = glob("/path/to/folder/*.txt");
This will populate the $files
variable with a list of all files matching the *.txt
pattern in the given path.
Reference -
glob()
Solution 2:
If you want more than one extension searched, then preg_grep()
is an alternative for filtering:
$files = preg_grep('~\.(jpeg|jpg|png)$~', scandir($dir_f));
Though glob
has a similar extra syntax. This mostly makes sense if you have further conditions, add the ~i
flag for case-insensitive, or can filter combined lists.
Solution 3:
PHP's glob()
function let's you specify a pattern to search for.
Solution 4:
You can try using GlobIterator
$iterator = new \GlobIterator(__DIR__ . '/*.txt', FilesystemIterator::KEY_AS_FILENAME);
$array = iterator_to_array($iterator);
var_dump($array);
Solution 5:
glob($pattern, $flags)
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>