Tôi đã viết hàm đệ quy PHP để xóa thư mục. Tôi tự hỏi, làm cách nào để sửa đổi chức năng này để xóa tất cả các tệp và thư mục trong webhosting, không bao gồm mảng tệp và tên thư mục đã cho (ví dụ: cgi-bin, .htaccess)?Chức năng xóa đệ quy PHP
BTW
để sử dụng chức năng này để hoàn toàn loại bỏ một thư mục gọi như thế này
recursive_remove_directory('path/to/directory/to/delete');
để sử dụng chức năng này để trống một thư mục gọi như thế này:
recursive_remove_directory('path/to/full_directory',TRUE);
Bây giờ chức năng là
function recursive_remove_directory($directory, $empty=FALSE)
{
// if the path has a slash at the end we remove it here
if(substr($directory,-1) == '/')
{
$directory = substr($directory,0,-1);
}
// if the path is not valid or is not a directory ...
if(!file_exists($directory) || !is_dir($directory))
{
// ... we return false and exit the function
return FALSE;
// ... if the path is not readable
}elseif(!is_readable($directory))
{
// ... we return false and exit the function
return FALSE;
// ... else if the path is readable
}else{
// we open the directory
$handle = opendir($directory);
// and scan through the items inside
while (FALSE !== ($item = readdir($handle)))
{
// if the filepointer is not the current directory
// or the parent directory
if($item != '.' && $item != '..')
{
// we build the new path to delete
$path = $directory.'/'.$item;
// if the new path is a directory
if(is_dir($path))
{
// we call this function with the new path
recursive_remove_directory($path);
// if the new path is a file
}else{
// we remove the file
unlink($path);
}
}
}
// close the directory
closedir($handle);
// if the option to empty is not set to true
if($empty == FALSE)
{
// try to delete the now empty directory
if(!rmdir($directory))
{
// return false if not possible
return FALSE;
}
}
// return success
return TRUE;
}
}
Xem http://trac.symfony-project.org/browser/branches/1.4/lib/util/sfToolkit.class.php#L54 để triển khai hiện tại. –