2009-07-23 273 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; 
} 
相關問題