桜ヶ丘日記

技術メモとかとか

phpでファイル一覧を表示しちゃおう

たまーに必要になるけど毎回書くのが面倒なので。
なお公開を前提としない書き捨てコードなので突っ込み無用です

<?php
$dir = preg_replace('/\.+/', '.', ($_REQUEST['dir']=='') ? '.' : $_REQUEST['dir']);

print "<h1>" . preg_replace('/^\.(.*)$/', "music$1", $dir) . "/</h1>";
if (!is_dir($dir)) {error('invalid dir');}
if (!($dh = opendir($dir))) {error('cannot open dir');}

print "<ul>";
$parent = preg_replace('/^(.*)\/[^\/]*/', "$1", $dir);
if($dir!=$parent){print "<li><a href=\"?dir=$parent\">[up]</a></li>";}

$f = array();
while (($file = readdir($dh)) !== false) {
  if(preg_match('/^\./', $file)){continue;}
  $f[] = $file;
}
asort($f);

foreach ($f as $file) {
  if(is_dir("$dir/$file")){
    print "<li><a href=\"?dir=" . "$dir/$file" . "\">$file/</a></li>";
  }else{
    if(!preg_match('/\.mp3$/', $file)){continue;}  // file name filter
    print "<li><a href=\"" . "$dir/$file" . "\">$file</a></li>";
  }
}
print "</ul>";

closedir($dh);

function error($msg){
  print "<p>$msg</p>";
  exit;
}

?>

使いたかったら好きに使って下さい。
好きなオープンソースライセンス適用してもいいよ。