递归打印级联目录:
<?php
function open_dir($path, $len = 3)
{
$dp = opendir($path);
while (($filename = readdir($dp)) !== false)
{
if ($filename == '.' || $filename == '..') //当是虚拟目录时
{
continue;
}
echo '<p>' . str_repeat(' ', $len) . '|' . '---<span id="' . $filename .'">' . $filename, '</span><br /></p>'; //打印文件名
if (is_dir($path . '/' . $filename)) //如果是目录
{
echo <<<CHCOLOR
<script type="text/javascript">
document.getElementById('$filename').style.color = 'blue';
</script>
CHCOLOR;
open_dir($path . '/' . $filename, 3 * $len); //递归调用函数open_dir()继续打印文件
}
}
closedir($dp);
}
$path = './test';
open_dir($path);
?>
在浏览器里现实效果如:
递归创建级联目录
<?php
//方法一
function mk_dir($path)
{
//如果$path的父目录存在
if (is_dir(dirname($path)))
{
return mkdir($path);
}
mk_dir(dirname($path));
return mkdir($path);
}
//方法二
function mk_dir1($path)
{
if (is_dir($path))
{
return true;
}
//父目录一定要先存在,如果不存在,创建之
return is_dir(dirname($path)) || mk_dir1(dirname($path)) ? mkdir($path) : false;
}
$path = './a/b/c/d/e/f';
echo mk_dir($path) ? 'ok' : 'fail';
//方法三
mkdir($path, 0777, true);
?>
递归删除级联目录
<?php
function del_dir($path)
{
//不是目录
if (!is_dir($path))
{
return NULL;
}
//打开目录
$dp = opendir($path);
while(($filename = readdir($dp)) !== false)
{
if ($filename == '.' || $filename == '..')
{
continue;
}
$tem_path = $path . '/' . $filename;
if (is_dir($tem_path)) //如果是目录
{
del_dir($tem_path); //递归调用del_dir()
}
else
{
unlink($tem_path); //删除文件
}
}
closedir($dp);
rmdir($path); //删除目录
?>
小小练习!