Maison >php教程 >PHP开发 >Supprimer récursivement les répertoires et les fichiers dans rrmdir php

Supprimer récursivement les répertoires et les fichiers dans rrmdir php

高洛峰
高洛峰original
2016-12-28 15:02:311531parcourir

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 — supprimer le répertoire
Signaler un bug Description
bool rmdir ( string $dirname )
Essayez de supprimer le répertoire spécifié par dirname Table des matières. Le répertoire doit être vide et doit disposer des autorisations appropriées. Renvoie TRUE en cas de succès ou FALSE en cas d'échec
Remarque : depuis PHP 5.0.0, rmdir() peut également être utilisé avec certains protocoles d'encapsulation d'URL. Consultez la liste des protocoles et wrappers pris en charge pour voir quels protocoles d'encapsulage d'URL sont pris en charge par rmdir().
Remarque : la prise en charge du contexte a été ajoutée dans PHP 5.0.0. Voir la fonction Stream pour une description du contexte.
Remarque : lorsque le mode sans échec est activé, PHP vérifiera si le répertoire manipulé par le script a le même UID (propriétaire) que le script en cours d'exécution lors de l'exécution du script.
Voir mkdir() et 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); 
} 
?>

Pour plus d'articles liés à la suppression récursive de répertoires et de fichiers sous des répertoires dans rrmdir php, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn