最好的方式来获取从一个特定的扩展名在一个目录过滤的文件在php中
可能重复:
目录中特定文件的PHP列表
使用PHP的scandir($迪尔),并只得到图像!
所以现在我有一个目录,我正在得到一个文件列表
$dir_f = "whatever/random/"; $files = scandir($dir_f);
但是,这将检索目录中的每个文件。 我如何才能以最有效的方式检索具有特定扩展名的文件,例如.ini。
PHP有一个很棒的function,可以帮助你只捕获你需要的文件。 其被称为glob()
glob – 查找匹配模式的path名
这里是一个示例用法 –
$files = array(); foreach (glob("/path/to/folder/*.txt") as $file) { $files[] = $file; }
参考 –
-
glob()
PHP的glob()
函数让你指定一个模式来search。
如果您希望search多个扩展名,则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 }
还没有testing正则expression式,但是这样的事情:
if ($handle = opendir('/file/path')) { while (false !== ($entry = readdir($handle))) { if (preg_match('/\.txt$/', $entry)) { echo "$entry\n"; } } closedir($handle); }