2009-07-23 188 views

回答

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... 
} 

$fileSplFileInfo对象。

+0

您可能想要为您的正则表达式添加`$`。 – Gumbo 2009-07-23 14:08:57

+0

哎呀呀... 15个字符:| – Greg 2009-07-23 16:02:14

2

没有为你做。递归是这里的答案。一个在dir中查找并获取所有文件列表的函数。滤出唯一个JPG文件,然后调用自身,如果我发现任何子迪尔斯

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; 
} 
相关问题