rrmdir php中递归删除目录及目录下的文件


Posted in PHP onMay 15, 2011
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != “.” && $object != “..”) { 
if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/”.$object); else unlink($dir.”/”.$object); 
} 
} 
reset($objects); 
} 
}

rmdir
(PHP 4, PHP 5)
rmdir — 删除目录
Report a bug 说明
bool rmdir ( string $dirname )
尝试删除 dirname 所指定的目录。 该目录必须是空的,而且要有相应的权限。成功时返回 TRUE, 或者在失败时返回 FALSE.
Note: 自 PHP 5.0.0 起 rmdir() 也可用于某些 URL 封装协议。参见Supported Protocols and Wrappers 的列表看看 rmdir() 支持哪些 URL 封装协议。
Note: 在 PHP 5.0.0 中增加了 对上下文(Context)的支持。有关 上下文(Context) 的说明参见 Stream 函数。
Note: 当启用 安全模式时, PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID(所有者)。
参见 mkdir() 和 unlink()。
<?php 
function rrmdir($dir) { 
if (is_dir($dir)) { 
$objects = scandir($dir); 
foreach ($objects as $object) { 
if ($object != "." && $object != "..") { 
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); 
} 
} 
reset($objects); 
rmdir($dir); 
} 
} 
?>

This isn't my code, but just thought I would share, since it took me so long to find. This is a function to delete a folder, all sub-folders, and files in one clean move.
Just tell it what directory you want deleted, in relation to the page that this function is executed. Then set $empty = true if you want the folder just emptied, but not deleted. If you set $empty = false, or just simply leave it out, the given directory will be deleted, as well.
 
<?php
function deleteAll($directory, $empty = false) {
if(substr($directory,-1) == "/") {
$directory = substr($directory,0,-1);
}
if(!file_exists($directory) || !is_dir($directory)) {
return false;
} elseif(!is_readable($directory)) {
return false;
} else {
$directoryHandle = opendir($directory);
while ($contents = readdir($directoryHandle)) {
if($contents != '.' && $contents != '..') {
$path = $directory . "/" . $contents;
if(is_dir($path)) {
deleteAll($path);
} else {
unlink($path);
}
}
}
closedir($directoryHandle);
if($empty == false) {
if(!rmdir($directory)) {
return false;
}
}
return true;
}
}
?>
[/code]
A patch to previous script to make sure rights for deletion is set:
<?php 
//Delete folder function 
function deleteDirectory($dir) { 
if (!file_exists($dir)) return true; 
if (!is_dir($dir) || is_link($dir)) return unlink($dir); 
foreach (scandir($dir) as $item) { 
if ($item == '.' || $item == '..') continue; 
if (!deleteDirectory($dir . "/" . $item)) { 
chmod($dir . "/" . $item, 0777); 
if (!deleteDirectory($dir . "/" . $item)) return false; 
}; 
} 
return rmdir($dir); 
} 
?>

更多说明可以参考 http://cn.php.net/rmdir
PHP 相关文章推荐
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
php 安全过滤函数代码
May 07 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
php调整服务器时间的方法
Apr 03 PHP
php.ini中的request_order推荐设置
May 10 PHP
递归实现php数组转xml的代码分享
May 14 PHP
php遍历解析xml字符串的方法
May 05 PHP
php生成mysql的数据字典
Jul 07 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
PHP工厂模式的日常使用
Mar 20 PHP
TP3.2框架分页相关实现方法分析
Jun 03 PHP
centos 5.6 升级php到5.3的方法
May 14 #PHP
php中在PDO中使用事务(Transaction)
May 14 #PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 #PHP
PHP与C#分别格式化文件大小的代码
May 14 #PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 #PHP
php 数组的一个悲剧?
May 11 #PHP
php 归并排序 数组交集
May 10 #PHP
You might like
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
使用node.js搭建服务器
2017/05/20 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
Python使用Django实现博客系统完整版
2020/09/29 Python
python re模块的高级用法详解
2018/06/06 Python
基于python历史天气采集的分析
2019/02/14 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
python实现网页录音效果
2020/10/26 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
个人简历自我评价八例
2013/10/31 职场文书
外贸业务员求职信
2014/06/16 职场文书
农村文化建设标语
2014/10/07 职场文书
2014年教研员工作总结
2014/12/23 职场文书
初中同学会致辞
2015/08/01 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android