如果該文件夾包含任何文件rmdir()
函數失敗。我可以循環瀏覽目錄中的所有文件,如下所示:PHP:最簡單的方法來刪除文件夾(包括其內容)
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
是否有任何方法可以一次全部刪除它?
如果該文件夾包含任何文件rmdir()
函數失敗。我可以循環瀏覽目錄中的所有文件,如下所示:PHP:最簡單的方法來刪除文件夾(包括其內容)
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
unlink($dir.DIRECTORY_SEPARATOR.$item);
}
rmdir($dir);
是否有任何方法可以一次全部刪除它?
嘛,總是有
system('/bin/rm -rf ' . escapeshellarg($dir));
(如有)。
rrmdir()
- 遞歸刪除目錄:
function rrmdir($dir) {
foreach(glob($dir . '/*') as $file) {
if(is_dir($file)) rrmdir($file); else unlink($file);
} rmdir($dir);
}
我曾經使用這樣的功能刪除了我的整個項目,要小心! – gskema 2014-07-21 08:27:44
@gskema,您的評論讓我大笑!我只能想象「ohhhh shhiiiiittttt」時刻。我希望你一切都回來! – silversunhunter 2015-04-22 16:21:14
@silversunhunter其實,我沒有。當'unlink'刪除某些東西時,就意味着它。好的,它只是一個測試項目。每天的課程:使用遠程VCS – gskema 2015-04-22 16:46:55
function delete_files($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir")
delete_files($dir."/".$object);
else unlink ($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
此機能的研究刪除該目錄及其所有子目錄和文件:
function DelDir($target) {
if(is_dir($target)) {
$files = glob($target . '*', GLOB_MARK); //GLOB_MARK adds a slash to directories returned
foreach($files as $file)
{
DelDir($file);
}
rmdir($target);
} elseif(is_file($target)) {
unlink($target);
}
}
一個安全,良好的功能受到lprent 它可以防止意外刪除位於當前目錄
public static function delTree($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
(is_dir("$dir/$file") && !is_link($dir)) ? delTree("$dir/$file") : unlink("$dir/$file");
}
return rmdir($dir);
}
符號鏈接目錄的內容位於PHP註釋但這不能在Windows服務器上運行。 – Raza 2013-12-10 10:34:43
@KashifRaza:對。因此「可用」。 – chaos 2013-12-11 16:03:48
在Windows上使用: system('rd/Q/S''。$ dir。'「'); – ddelrio1986 2014-06-23 14:31:01