列出dir和subdirs中的所有jpg文件

时间:2009-07-23 13:47:32

标签: php

如何在PHP5中列出给定目录及其子目录中的所有jpg文件?

我以为我可以为此写一个glob模式,但我无法理解。

thanx,b。

3 个答案:

答案 0 :(得分:5)

您可以将RecursiveDirectoryIteratorfilter

一起使用
class ImagesFilter extends FilterIterator
{
    public function accept()
    {
        $file = $this->getInnerIterator()->current();
        return preg_match('/\.jpe?g$/i', $file->getFilename());
    }
}

$it = new RecursiveDirectoryIterator('/var/images');
$it = new ImagesFilter($it);

foreach ($it as $file)
{
    // Use $file here...
}

$file是一个SplFileInfo对象。

答案 1 :(得分:2)

没有为你做这件事。递归是这里的答案。查找目录并获取所有文件列表的函数。如果我发现任何子目录

,那么只过滤jpg然后调用它自己

答案 2 :(得分:2)

希望我有时间做更多&测试,但这可以作为一个起点:它应该(未经测试)返回一个包含指定目录中所有jpg / jpeg文件的数组。

function load_jpgs($dir){
    $return = array();
    if(is_dir($dir)){
        if($handle = opendir($dir)){
            while(readdir($handle)){
                echo $file.'<hr>';
                if(preg_match('/\.jpg$/',$file) || preg_match('/\.jpeg$/',$file)){
                    $return[] = $file;
                }
            }
            closedir($handle);
            return $return;
        }
    }
    return false;
}