PHPで任意のディレクトリ下にあるファイルを一覧取得する方法

  • 24
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

globという関数を使う。*が使えるので便利。

使い方

dir以下のファイルを全て取得してくれる。ファイルがひとつもない場合は空の配列が返ってくる。

foreach(glob('dir/*') as $file){
    if(is_file($file)){
        echo htmlspecialchars($file);
    }
}

拡張子を指定したりもできる。

foreach(glob('dir/{*.gif,*.zip,*.pdf}',GLOB_BRACE) as $file){
    if(is_file($file)){
        echo htmlspecialchars($file);
    }
}

引数にflagsというのをつけていろいろできる。

参考(公式サイト)

http://php.net/manual/ja/function.glob.php

array glob ( string $pattern [, int $flags = 0 ] )

flags

  • GLOB_MARK - 各ディレクトリにスラッシュを追加します
  • GLOB_NOSORT - ディレクトリに存在するファイルを返します (ソートはされません)。このフラグを使わない場合は、パス名をアルファベット順にソートします。
  • GLOB_NOCHECK - 検索パターンにマッチするファイルが見つからない場合に、 検索パターン自身を返します
  • GLOB_NOESCAPE - バックスラッシュによるメタ文字のクォートを行いません
  • GLOB_BRACE - {a,b,c} を展開し「a」、「b」あるいは「c」のいずれかにマッチさせます
  • GLOB_ONLYDIR - パターンにマッチするディレクトリのみを返します
  • GLOB_ERR - (ディレクトリが読めないなどの) 読み込みエラー時に停止します。デフォルトではエラーは無視されます。