今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~
1、清除PHP缓存文件
<?php
function read_dir($dir,$file)
{
$a =strpos($file,\".php\");
if($a>0)
{
unlink($dir . $file);
echo \"delete $dir$file <br>\";
return true;
}
if(strpos($file,\".\") === 0 || strpos($file,\".\") !== false ) return true;
if(strpos($file,\".\") === false || strpos($dir,\"/\") === false)
{
$dir = $dir . $file . \"/\";
if(!is_dir($dir)) return false;
$dh = opendir($dir);
while(($file = readdir($dh)) != false)
{
read_dir($dir,$file); //递归调用
}
}
}
function clear_caches()
{
$dir = \"./temp/\"; //要清除的PHP缓存文件目录
if(!is_dir($dir)) die(\"It is not a dir\");
$dh = opendir($dir);
while(($file = readdir($dh) )!=false)
{
//var_dump($file);
read_dir($dir,$file);
}
}
?>
2、遍历目录中所有文件
<html>
<head>
<meta http-enquiv=\"Content-Type\" content=\"text/html;charset=gb2312\">
<title>查看目录</title>
</head>
<body>
<table width=\"600\" align=\"center\">
<tr>
<th width=\"50%\">文件名</th>
<th width=\"25%\">修改时间</th>
<th width=\"25%\">文件大小(k)</th>
</tr>
<?php
//$dir = \"./admin/\";
$dir = \"c:/\";
$up_dir = \"上级目录\";
$up_url = $dir;
if(isset($_REQUEST[\'act\']) && $_REQUEST[\'act\']==\'list_dir\')
{
if(emptyempty($_REQUEST[\'dir\']))
{
$up_dir=\"目录为空!\";
}
$dir = isset($_REQUEST[\'dir\']) ? $_REQUEST[\'dir\'] : $dir;
}
if(!is_dir($dir))
{
$up_dir=\"无效目录!\";
}
?>
<tr>
<td colspan=\"3\">
<?php
if(strpos($up_dir,\"上级目录\")!==false)
{
//if($up_url==\"\") echo $up_dir;
if($dir != \"./admin/\")
{
$up_url = substr($dir,0,-1);
$k = strrpos($up_url,\"/\");
$up_url = substr($up_url,0,$k-strlen($up_url));
$up_url = $up_url .\"/\";
}
echo \"<a href=\\\"test.php?act=list_dir&dir=$up_url\\\">$up_dir</a>\";
}
else
{
echo $up_dir;
die();
}
?>
</td>
</tr>
<?php
$up_dir = $dir;
$dh = opendir($dir);
while(($file=readdir($dh)) != false)
{
if($file != \".\" && $file != \"..\" && $file != \".svn\" )
{
if(strpos($file,\".\") !==false)
{
$time = date(\"Y-m-d H:i:s\", filectime($dir . $file));
$size = filesize($dir . $file)/1000;
echo \"<tr><td>$file</td><td>$time</td><td>$size</td></tr>\";
}
else
{
$time = date(\"Y-m-d H:i:s.\", filectime($dir . $file));
$size = filesize($dir . $file)/1000;
$dir = $dir . $file .\"/\";
echo \"<tr><td><a href =\\\"test.php?act=list_dir&dir=$dir\\\">$file</a></td><td>$time</td><td>$size</td></tr>\";
$dir = $up_dir;
}
}
}
?>
</table>
<?php die(); ?>
</body>
</html>