概要
特定dirからファイル名のみ取り出すやり方色々あったのでまとめとく
opendir()&readdir()
ここに書いてあった内容
https://syncer.jp/php-how-to-get-directory-file-list
php
$dir = "/img/";
$fileList = array();
// ディレクトリの存在を確認し、ハンドルを取得
if( is_dir( $dir ) && $handle = opendir( $dir ) ) {
// ループ処理
while( ($file = readdir($handle)) !== false ) {
// ファイルのみ取得
if( filetype( $path = $dir . $file ) == "file" ) {
/********************
各ファイルへの処理
$file ファイル名
$path ファイルのパス
********************/
array_push($fileList,$file);
}
}
}
var_dump($fileList);
array (size=4)
0 => string 'hoge.jpg' (length=8)
1 => string 'foo.jpg' (length=7)
2 => string 'bar.jpg' (length=7)
3 => string 'hage.jpg' (length=8)
特徴
- 少し回りくどい??
- シンプルにファイルのみ返ってきてよさそう
scandir()
php
$dir = "/img/";
$fileList = scandir($dir);
var_dump($fileList);
array (size=6)
0 => string '.' (length=1)
1 => string '..' (length=2)
2 => string 'hoge.jpg' (length=8)
3 => string 'foo.jpg' (length=7)
4 => string 'bar.jpg' (length=7)
5 => string 'hage.jpg' (length=8)
特徴
- あれ、dir名入ってる
- まあシンプル
glob()
php
$dir = "/img/";
$fileList = glob($dir.'*.{jpeg,gif,png}', GLOB_BRACE);
var_dump($fileList);
array (size=4)
0 => string '/home/ubuntu/workspace/img/hoge.jpg' (length=35)
1 => string '/home/ubuntu/workspace/img/foo.jpg' (length=34)
2 => string '/home/ubuntu/workspace/img/bar.jpg' (length=34)
3 => string '/home/ubuntu/workspace/img/hage.jpg' (length=35)
特徴
- フルパス
- シンプルで指定も楽
最後に
他に良いやり方もあったりするんかなーー。まあこんなもんか。