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 相关文章推荐
留言板翻页的实现详解
Oct 09 PHP
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
MongoDB在PHP中的常用操作小结
Feb 20 PHP
Laravel实现用户注册和登录
Jan 23 PHP
浅谈php自定义错误日志
Feb 13 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
php简单构造json多维数组的方法示例
Jun 08 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP实现会员账号单唯一登录的方法分析
Mar 07 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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
PHP 实用代码收集
2010/01/22 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
JavaScript Event学习第二章 Event浏览器兼容性
2010/02/07 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
JQuery扩展对象方法操作示例
2018/08/21 jQuery
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
对Python中9种生成新对象的方法总结
2018/05/23 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python 使用type来定义类的实现
2019/11/19 Python
Keras 加载已经训练好的模型进行预测操作
2020/06/17 Python
在Python中实现字典反转案例
2020/12/05 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
台湾生鲜宅配:大口市集
2017/10/14 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
为什么要有struct关键字
2012/05/08 面试题
检举信的格式及范文
2014/04/04 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
营业用房租赁协议书
2014/11/26 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
公司庆典主持词
2015/07/04 职场文书
实验室安全管理制度
2015/08/05 职场文书