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というのをつけていろいろできる。
参考(公式サイト)
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 - (ディレクトリが読めないなどの) 読み込みエラー時に停止します。デフォルトではエラーは無視されます。