Napisałem funkcję rekursywnego PHP do usuwania folderów. Zastanawiam się, jak mogę zmodyfikować tę funkcję, aby usunąć wszystkie pliki i foldery w webhostingu, z wyłączeniem podanej tablicy plików i nazw folderów (np. Cgi-bin, .htaccess)?Funkcja recursive delete PHP
BTW
aby skorzystać z tej funkcji, aby całkowicie usunąć katalog nazywając jak ten
recursive_remove_directory('path/to/directory/to/delete');
aby skorzystać z tej funkcji, aby opróżnić katalog nazywając tak:
recursive_remove_directory('path/to/full_directory',TRUE);
teraz funkcja ta to
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;
}
}
Zobacz http://trac.symfony-project.org/browser/branches/1.4/lib/util/sfToolkit.class.php#L54 dla istniejącej implementacji. –