PDA

View Full Version : Best way to get files from a dir filtered by certain extension in php


Kamila
2016-08-16, 12:43 AM
So right now I have a directory and I am getting a list of files

$dir_f = "whatever/random/";
$files = scandir($dir_f);

That, however, retrieves every file in a directory. How would I retrive only files with a certain extension such as .ini in most efficient way.

Karen
2016-08-16, 12:45 AM
PHP's glob() function let's you specify a pattern to search for. PHP has a great function to help you capture only the files you need. Its called glob()

glob - Find pathnames matching a pattern
Here is an example usage -

$files = array();
foreach (glob("/path/to/folder/*.txt") as $file) {
$files[] = $file;
}

Kasen
2016-08-16, 12:47 AM
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
?>


or


//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

}

Katelyn
2016-08-16, 12:49 AM
8
down vote
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.
or

glob("{$dir}*.{jpg,*​jpeg,gif,ico,png}", GLOB_BRACE). This would work as well for multiple extensions.