我想知道,删除一个包含所有文件的目录最简单的方法是什么?
我使用的是rmdir(PATH。“/”。美元价值);要删除一个文件夹,但是,如果里面有文件,我根本不能删除它。
我想知道,删除一个包含所有文件的目录最简单的方法是什么?
我使用的是rmdir(PATH。“/”。美元价值);要删除一个文件夹,但是,如果里面有文件,我根本不能删除它。
当前回答
<?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);
}
}
?>
你试过上述代码从php.net吗
为我工作吧
其他回答
这里有一个简单的解决办法
$dirname = $_POST['d'];
$folder_handler = dir($dirname);
while ($file = $folder_handler->read()) {
if ($file == "." || $file == "..")
continue;
unlink($dirname.'/'.$file);
}
$folder_handler->close();
rmdir($dirname);
如果你不确定,给定的路径是目录或文件,那么你可以使用这个函数删除路径
function deletePath($path) {
if(is_file($path)){
unlink($path);
} elseif(is_dir($path)){
$path = (substr($path, -1) !== DIRECTORY_SEPARATOR) ? $path . DIRECTORY_SEPARATOR : $path;
$files = glob($path . '*');
foreach ($files as $file) {
deleteDirPath($file);
}
rmdir($path);
} else {
return false;
}
}
我更喜欢这个,因为它仍然在成功时返回TRUE,失败时返回FALSE,而且它还防止了一个错误,即一个空路径可能会尝试删除'/*'中的所有内容!!:
function deleteDir($path)
{
return !empty($path) && is_file($path) ?
@unlink($path) :
(array_reduce(glob($path.'/*'), function ($r, $i) { return $r && deleteDir($i); }, TRUE)) && @rmdir($path);
}
我不敢相信有30多个答案。在PHP中递归删除一个文件夹可能需要几分钟,这取决于目录的深度和其中的文件数量!你可以用一行代码做到这一点…
Shell_exec ("rm -rf "。美元dir);
如果您关心删除整个文件系统,请首先确保您的$dir路径正是您想要的。永远不要允许用户输入一些可以直接删除文件的东西,而不首先严格验证输入。这是基本的编码实践。
删除文件夹中的所有文件 到“分离”,水珠(" $目录/ * . * ")); 删除文件夹中所有。*-文件(不带"."和"..") 到“分离”,array_diff(水珠(“目录/美元。*),数组(“目录/美元。”,“目录/美元. .”))) 现在删除文件夹本身 删除文件夹(目录)