如何在PHP中使用scandir获取过滤的文件名列表?

时间:2013-07-05 09:43:34

标签: php file scandir

我想将所有包含'_img'和PDF类型的文件放在文件夹

而不是使用

$fileArray = scandir($dir);
foreach ($fileArray as $file) {
    if (preg_match("_img",$file) && pathinfo($file, PATHINFO_EXTENSION) == 'pdf'){
        $filteredArray[] = $file;
    }
}

有没有捷径或者这是最好的方式?感谢

2 个答案:

答案 0 :(得分:2)

使用php glob()功能

  

glob()函数根据libc glob()函数使用的规则搜索匹配模式的所有路径名,这类似于常见shell使用的规则

<?php 
  $filteredArray = array();
  foreach (glob($dir."/*_img.pdf") as $filename)
     $filteredArray[] = $filename;
?>

还有fnmatch()函数,它将文件名与模式匹配

最后一个解决方案是将DirectoryIteratorFilterIterator

一起使用

答案 1 :(得分:2)

对我来说这很好用。 你走进你的目录并将其存储到一个数组。

在此级别,不需要优化。你会赢得花生失去时间来优化这一点。