可能重复:
how to delete a folder with contents using PHPPHP删除目录不为空
我知道,你可以删除一个文件夹是空的,命令rmdir。我知道你可以用下面三行清除一个文件夹。
foreach($directory_path as $file) {
unlink($file);
}
但是,如果一个文件实际上是一个子目录什么。一个人如何摆脱这个问题,但却无限量地享受着双镜效应。在PHP中有没有强制删除目录?
感谢
可能重复:
how to delete a folder with contents using PHPPHP删除目录不为空
我知道,你可以删除一个文件夹是空的,命令rmdir。我知道你可以用下面三行清除一个文件夹。
foreach($directory_path as $file) {
unlink($file);
}
但是,如果一个文件实际上是一个子目录什么。一个人如何摆脱这个问题,但却无限量地享受着双镜效应。在PHP中有没有强制删除目录?
感谢
此功能将删除一个目录 - [R ecursively:
function rmdir_recursive($dir) {
foreach(scandir($dir) as $file) {
if ('.' === $file || '..' === $file) continue;
if (is_dir("$dir/$file")) rmdir_recursive("$dir/$file");
else unlink("$dir/$file");
}
rmdir($dir);
}
这一个太:
function rmdir_recursive($dir) {
$it = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST);
foreach($it as $file) {
if ($file->isDir()) rmdir($file->getPathname());
else unlink($file->getPathname());
}
rmdir($dir);
}
从PHP rmdir
页:
<?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
function delTree($dir) {
$files = glob($dir . '*', GLOB_MARK);
foreach($files as $file){
if(substr($file, -1) == '/')
delTree($file);
else
unlink($file);
}
if (is_dir($dir)) rmdir($dir);
}
?>
感谢这么多,第一功能完美的作品! – Jjack
<?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的文档
其实你可以使用RecursiveDirectoryIterator :: SKIP_DOTS标志来避免第一个if语句... – Moby04
SKIP_DOTS在文档中不存在,你在哪找到这个? – Eric
SKIP_DOTS在此处引用:[FilesystemIterator文档](http://php.net/manual/fr/filesystemiterator.construct.php)。它来自父类'FilesystemIterator'。 – Elorfin