Comment supprimer récursivement un répertoire et tout son contenu (fichiers + sous-répertoires) en PHP ?

| | | | | | | | | | | | | | | | |
Fonction PHP pour supprimer tous les fichiers :Le code suivant passe d`abord le chemin vers le répertoire à supprimer. Il vérifie si le fichier ou le répertoire à supprimer existe, en fait / existe ou non. S`il existe, il ouvrira le fichier et vérifiera s`il y a quelque chose dans ce fichier ou non. Si ce n`est pas le cas, supprimez le répertoire à l`aide du répertoire rmdir. Mais si d`autres fichiers sont présents dans le répertoire, il supprimera les fichiers à l`aide de la fonction de dissociation, sauf. et .. fichiers, qui signifient fichiers système. Après avoir supprimé tout le contenu, utilisez simplement la fonction rmdir pour supprimer complètement le répertoire.Exemple : < ? php
// Variable pour stocker le nom du répertoire
// à supprimer$folder = `temporary_files` ;
// Obtenir une liste de tous noms de fichiers // dans le dossier.$files = glob ( $dossier . `/ *` );
// Boucle dans la liste des fichiersforeach ( $files as $ fichier ) { // Vérifier le fichier si ( est_fichier ( $fichier )) { // Utilisez la fonction de déconnexion pour // supprimer le fichier. dissocier (
$file ); } }
?>
  • Avant de supprimer des fichiers :
  • Après avoir supprimé des fichiers :
Description :
  • L`exemple ci-dessus supprime tous les fichiers du dossier nommé "temp‚".
  • Listez les fichiers de ce répertoire à l`aide de la fonction PHP glob. La fonction glob "trouve les chemins qui correspondent à un certain modèle". Dans ce cas, utilisez le caractère générique * (astérisque) pour tout sélectionner dans le dossier temporaire.
  • La fonction glob renvoie un tableau de noms de fichiers qui se trouvent dans le dossier spécifié.
  • Boucle sur ce tableau.
  • Utiliser la fonction is_file pour vérifier s`il s`agit d`un fichier et non d`un répertoire ou d`un sous-répertoire parent.
  • Enfin, utiliser la fonction unlink, qui supprime le fichier (si PHP a des autorisations valides - sinon, il lancera une erreur E_WARNING et renverra la valeur booléenne FALSE).
  • Supprimer tous les fichiers et sous-répertoires dans un répertoire.Pour supprimer tous les fichiers et sous-répertoires dans tous les sous-répertoires , nous pouvons utiliser la récursivité. Voici un exemple de fonction PHP récursive qui supprime tous les fichiers et dossiers du répertoire spécifié.Exemple :
    // Fonction de suppression de tous les fichiers
    // et répertoiresfonction deleteAll ( $str ) {/code> // Vérifier les fichiers if ( is_file ( $str )) { // S`il s`agit d`un fichier, alors supprimez // en utilisant la fonction unlink return unlink ( $str ); } // Si c`est un répertoire. elseif ( is_dir ( $str )) { // Obtenir une liste des fichiers dans ce // répertoire $scan = glob (rtrim ( $str , `/` ). `/ *` ); // Boucle dans la liste des fichiers foreach ( $scan as $index = > $path ) { // Appeler une fonction récursive deleteAll ( $path ); } / / Supprime le répertoire lui-même return @ rmdir ( $str ); } }
    // appel de fonction deleteAll ( `temporary_files` );
    ?>
    Sortie :
    • Avant de supprimer le répertoire :
    • Après suppression du répertoire :le répertoire Le secteur est complètement supprimé.
    La fonction vérifie si la variable représente $str est le chemin d`accès au fichier, puis supprime le fichier à l`aide de la fonction unlink. Cependant, si $str représente un répertoire, il obtient une liste de tous les fichiers du répertoire spécifié avant de supprimer chacun d`eux. Enfin, il supprime le sous-répertoire lui-même à l`aide de la fonction PHP rmdir.