【发布时间】:2011-11-24 20:36:51
【问题描述】:
【问题讨论】:
标签: php delete-file rm rmdir
【问题讨论】:
标签: php delete-file rm rmdir
PHP docs 的这个技巧非常酷:
function rrmdir($path)
{
return is_file($path)?
@unlink($path):
array_map('rrmdir',glob($path.'/*'))==@rmdir($path)
;
}
它利用array_map,在结果数组上调用给定函数。它也是跨平台的。
【讨论】:
system("rm -fr $foldername");
虽然它只适用于 unix,但很简单。
【讨论】:
$foldername 上使用 escapeshellcmd,并且 (b) 小心你的路径'重新执行。为了安全起见,我会确保 $foldername 是绝对路径。
此递归函数已发布为comment on the rmdir() function reference page:
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);
}
}
【讨论】:
这是张贴在这里http://www.php.net/manual/en/function.rmdir.php
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;
}
}
【讨论】: