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配置心得包含MYSQL5乱码解决
Nov 20 PHP
几个php应用技巧
Mar 27 PHP
php读取xml实例代码
Jan 28 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
基于PHP的简单采集数据入库程序
Jul 30 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
Oct 09 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
9个比较实用的php代码片段
2016/03/15 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
python异常和文件处理机制详解
2016/07/19 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Python实现获取本地及远程图片大小的方法示例
2018/07/21 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Django框架模板用法入门教程
2019/11/04 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python控制台实现交互式环境执行
2020/06/09 Python
体育学院毕业生自荐信
2013/11/03 职场文书
员工培训心得体会
2013/12/30 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
酒店节能减排方案
2014/05/26 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书