2011年4月4日月曜日

現在のフォルダの内容表示

■ファイルだけ表示

1 <?php
2 //ディレクトリを開く
3 $dir=@opendir(getcwd()) or die("ディレクトリのオープンに失敗しました");
4 while($file = readdir($dir)) {
5 if (!is_dir($file)){
6 echo $file ."<BR>";
7 }
8 }
9 closedir($dir);
10 ?>


■フォルダも表示

1 <?php
2 //ディレクトリを開く
3 $dir=@opendir(getcwd()) or die("ディレクトリのオープンに失敗しました");
4 while($file = readdir($dir)) {
5 if (!is_dir($file)){
6 echo $file ."<BR>";
7 }
8 else {
9 echo "/".$file ."<BR>";
10 }
11 }
12 closedir($dir);
13 ?>



■フォルダにリンクもつける

<?php
$dir=@opendir(getcwd()) or die("ディレクトリのオープンに失敗しました");

while($file = readdir($dir)) {
if (!is_dir($file)){
echo $file ."<BR>";
}
else { ?>
<a href="<?php echo $file; ?>"><?php echo $file; ?></a><br/>
<?php
}
}


closedir($dir);

?>



・参照
http://masago.kir.jp/php20041028.php



■ひとつ上のフォルダを見に行く場合
ディレクトリかどうかを判断するis_dirはそのフォルダを参照しにいった場合に返り値を返すので、
opendirの値だけ上の階層にしても、if (!is_dir($file))のままではfalseしか戻さない。
※ファイル名だけ渡しても、フォルダとは判断してくれない

以下のようにしたら上手くいった
if (!is_dir('..'.DIRECTORY_SEPARATOR.$file)){

・DIRECTORY_SEPARATOR
ディレクトリの区切り文字
※これによりOSの違いを回避できる。べつにここでは"/"でもよかったけど、使ってみた。

■参照
PHP入門"is_dir"
http://nyx.pu1.net/function/filesystem/is_dir.html

PHPで、ディレクトリ構造をXMLに書き出すプログラムを作成しています。
http://q.hatena.ne.jp/1182482759

OSの判別
http://nyx.pu1.net/sample/tips/check_os.html

0 件のコメント:

コメントを投稿