PHPでファイルの一覧を得る方法。何度も書く必要があったでメモ。
OS XやLinuxであれば、findコマンドを使うやり方が簡単。
<?php // EPUBファイルを列挙 exec("find $r_dir -type f -name \"*.epub\"", $filelist); foreach ($filelist as $file) { // フルパスでファイルが得られる }
外部コマンドなしで取得する方法:
<?php // 全てのファイルを取得 $f = enumAllFiles("."); print_r($f); // EPUBファイルだけを取得(正規表現でパターンを指定) $f = enumAllFiles(".", '/\.epub$/'); print_r($f); // $path以下の全てのファイルを取得 function enumAllFiles($path, $re_mask = '') { $path = rtrim($path, '/'); $files = scandir($path); $res = []; foreach ($files as $file) { if ($file == ".") continue; if ($file == "..") continue; $fullpath = $path."/".$file; if (is_file($fullpath)) { if ($re_mask != '') { if (!preg_match($re_mask, $file)) continue; } $res[] = $fullpath; continue; } if (is_dir($fullpath)) { $subf = enumAllFiles($fullpath, $re_mask); $res = array_merge($res, $subf); } } return $res; }
scandir()を使ってファイル一覧を取得します。