2009-07-23 9 views

答えて

5

あなたはfilterRecursiveDirectoryIteratorを使用することができます。

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

+0

おっと... 15文字:| – Greg

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; 
} 
+0

あなたの条件は本当に冗長です。もしそれが本当であれば、明らかに*指定する必要はありません!== false – helloandre

+0

おっと、良いキャッチです。私は古いコードを必要に応じて再利用しました。一定。ありがとう! –

+0

ちょうど再帰とあなたの完了を追加します。 –