首頁  >  文章  >  php教程  >  rrmdir php中遞歸刪除目錄及目錄下的文件

rrmdir php中遞歸刪除目錄及目錄下的文件

高洛峰
高洛峰原創
2016-12-28 15:02:311489瀏覽

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); 
} 
} 
?>
<?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 != &#39;.&#39; && $contents != &#39;..&#39;) { 
$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 == &#39;.&#39; || $item == &#39;..&#39;) continue; 
if (!deleteDirectory($dir . "/" . $item)) { 
chmod($dir . "/" . $item, 0777); 
if (!deleteDirectory($dir . "/" . $item)) return false; 
}; 
} 
return rmdir($dir); 
} 
?>

更多rrmdir php中遞歸刪除目錄及目錄下的文件相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn