Questa funzione cancella tutti i files presenti una una cartella (passata come percorso fisico sul server, parametro $path). Permette anche di cancellare soltanto i files aventi alcune particolari estensioni (parametro $delete_only), oppure di mantenere quelli con particolari estensioni e cancellare tutti gli altri (parametro $keep_only).
ESEMPI:
Codice PHP:
// cancella tutti i files della cartella /home/temp/
unlink_dir("/home/temp/");
// cancella tutti i files con estensione JPG e DOC dalla cartella /home/temp/
unlink_dir("/home/temp/", "jpg|doc");
// cancella tutti i files dalla cartella /home/temp/ mantenendo solo quelli con estensione JPG e DOC
unlink_dir("/home/temp/", null, "jpg|doc");
Codice PHP:
/*
Cancella tutti i files presenti in una cartella.
Params:
$path Percorso della directory
$delete_only Estensioni separate da '|' dei files da eliminare; se NULL li elimina tutti
$keep_only Estensioni separate da '|' dei files da non eliminare; se NULL li elimina tutti
*/
function unlink_dir($path, $delete_only=null, $keep_only=null) {
if (!empty($path) && file_exists($path)) {
$dir_content = scandir($path);
// per evitare che "strpos" possa restituire 0 (che verrebbe confuso con FALSE)
if (!empty($delete_only))
$delete_only = '||'.strtolower($delete_only).'||';
elseif (!empty($keep_only))
$keep_only = '||'.strtolower($keep_only).'||';
foreach ($dir_content AS $file) {
if (is_file($path.$file)) {
// recupera l'estensione di questo file
$points = explode (".", $file);
end($points);
$ext = strtolower(current($points));
unset($points);
if (!empty($delete_only)) { // controlla se l'estensione del file va cancellata
if (strpos($delete_only, '|'.$ext.'|')>0)
unlink($path.$file);
}
elseif (!empty($keep_only)) { // controlla se l'estensione del file va mantenuta
if (!strpos($keep_only, '|'.$ext.'|'))
unlink($path.$file);
}
else // cancellazione di tutti i files
unlink($path.$file);
unset($ext);
}
}
unset($file);
unset($dir_content);
unset($path);
unset($delete_only);
unset($keep_only);
return true;
}
else
return false;
}