phpでアバウトなファイル検索ができるglob関数

なかなかハードなコーディングをしない限り、お世話にはならんだろう「glob」関数。
コイツはフルパス中のファイル・ディレクトリをアバウトに検索する折に役立ってくれますよ!

// 例えば、下記ディレクトリに
$dir = dirname(__DIR__) . "/public/thumbnail/member/";

// 1.すべてのJPGを探したいYO
$find[0] = "*.jpg";

// 2.サブパス+拡張子度外視で指定名のファイルを探したいYO
$find[1] = "F999999*";

// 3.指定の拡張子を探したい
$find[2] = "*.{jpg,gif,png}";

// 4.正規表現使いたい(F***.jpgとかF******.mp4とか)
$find[3] = "(F\d+)\.(jpe?g|mp4|m3u8)";

// 検索結果
// 1.は一次元配列下に結果が格納される
$files = glob($dir . $find[0]);
print_r($files);

/*
[0] => /var/www/project/app/storage/public/thumbnail/member/akira.jpg
[1] => /var/www/project/app/storage/public/thumbnail/member/F001.jpg
[2] => /var/www/project/app/storage/public/thumbnail/member/noimg.jpg
*/

// 2.同様
$files = glob($dir . $find[1]);
print_r($files);

/*
[0] => /var/www/project/app/storage/public/thumbnail/member/F999999.mp4
[1] => /var/www/project/app/storage/public/thumbnail/member/F999999/thumbs/005.webp
[2] => /var/www/project/app/storage/public/thumbnail/member/F999999/thumbs/trush/000.gif
*/

// 3.拡張子の複数指定には引数を使う
$files = glob($dir . $find[2], GLOB_BRACE);
print_r($files);

/*
[0] => /var/www/project/app/storage/public/thumbnail/member/F999999.jpg
[1] => /var/www/project/app/storage/public/thumbnail/member/F999999.gif
*/

// 4.パターンにより、結果は多次元配列化
$files = glob($dir . $find[2]);
print_r($files);

/*
[0][0] => /var/www/project/app/storage/public/thumbnail/member/F99.jpg
[0][1] => /var/www/project/app/storage/public/thumbnail/member/F99.m3u8
[1][0] => /var/www/project/app/storage/public/thumbnail/member/F9999999.mp4
*/

コメント

タイトルとURLをコピーしました