2017-07-01 17 views
0

画像フォルダ内のすべてのファイルを一覧表示するこのコードがあります。 jpg、png、gifなどの特定の拡張子のみを一覧に表示するにはどうすればいいですか?ファイル内の画像ファイルのみを一覧表示する

<select name="s1"> 
    <option value="" selected="selected">-----</option> 
    <?php 
     foreach(glob(dirname(__FILE__) . '/images/*') as $filename) { 
     $filename = basename($filename); 
     echo "<option value='" . $filename . "'>".$filename."</option>"; 
     } 
    ?> 
</select> 

答えて

2

glob()は2つのパラメータを取ります。二番目のパラメータフラグのドキュメントは示しています

GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c'

は、詳細はthis postを参照してください:

foreach(glob(dirname(__FILE__) . '/images/*.{jpg,png,gif}', GLOB_BRACE) as $filename){ 
    $filename = basename($filename); 
    echo "<option value='" . $filename . "'>".$filename."</option>"; 
} 
+0

これは簡単です..ありがとう.. – gtroop

1

結果をフィルタリングするには、ifステートメントと条件が必要です。ここでは正規表現が特に便利です。このような何かは、あなたが欲しいものを行う必要があります。

<select name="s1"> 
    <option value="" selected="selected">-----</option> 
    <?php 
     foreach(glob(dirname(__FILE__) . '/images/*') as $filename){ 
      $filename = basename($filename); 
      if (preg_match('/\.(jpg|png|gif)$/i', $filename)) { 
       echo "<option value='" . $filename . "'>".$filename."</option>"; 
      } 
     } 
    ?> 
</select> 

注:私はそれを読みやすくするために一貫性のインデントを使用するようにコードをフォーマットしました。

+0

おかげで私はパースエラー受信:(するpreg_match(/ \場合に構文エラーを、予期しません '/'。 (jpg | png | gif)$/i、$ filename)){ – gtroop

+0

@gtroop Oops;引用符を残してください。私の編集を見てください。 –

+0

その作業に感謝しました – gtroop

関連する問題