〈PHP〉ファイル一覧を取得する

PHPでディレクトリ内のファイル一覧を取得するメモ。画像リストとかそういうのに使える。

glob()関数を使う

ワイルドカード(*)が使える。拡張子も可。ただしソートはできない。

foreach(glob('./img/*.jpg') as $filename) {
  //画像表示(リンク付き)
  echo '<a href="' . $filename . '"><img src="' . $filename . '" alt="log"></a>' . "\n";
  //ファイル名のみ
  echo "$filename\n";
}

1行目(foreach〜の部分)でディレクトリ指定できる。
複数指定する場合は以下のように。

foreach(glob('./img/{*.gif,*.jpg,*.png}',GLOB_BRACE) as $filename) {}

(参考)PHPマニュアル glob()関数

glob()関数を使わない

sort()関数を使いたい場合。

$res_dir = opendir('./img/');
while(false !== ($file_list[] = readdir($res_dir)));
closedir($res_dir);

rsort($file_list);

foreach($file_list as $key=>$file) {
  echo '<a href="' . $file . '"><img src="./img/' . $file . '" alt="log"></a>' . "\n";
}