Suppression d'un dossier vide

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 910 fois - Téléchargée 26 fois

Contenu du snippet

Cette courte fonction permet de supprimer un dossier si et seulement si celui ci est vide.

La fonction retourne :
0 si le dossier n'existe pas ou est inaccessible
1 si la destruction réussie
2 si le dossier n'est pas vide

Source / Exemple :


function del_empty_folder ($folder) {
	if (is_dir($folder)) { // controle que le dossier existe                  
	    $i=0;
	    $fh=opendir($folder); // ouverture du dossier
	    while(($fichier = readdir($fh))!==false) { // parcours le dossier
	        $i++; // incremente a chaque élément trouvé
	        if ($i<=2) continue; // reboucle directement tant que l'index n'est pas representatif
	        return 2; // le dossier n'est pas vide
	    }
	    if ($i<=2) { // le dossier ne contient que 2 éléments (. et ..) donc il est vide :-)
	        closedir($fh); // fermeture du pointeur du dossier
	        rmdir($folder); // suppression du dossier
	        return 1; // dossier effacé
	    }                                              
	} else return 0; // le dossier n'existe pas ou est inaccessible
}

del_empty_folder('nom_du_dossier/');

Conclusion :


Rien de plus banal pour l'utilisation :

del_empty_folder('nom_du_dossier_a_supprimer');

J'ai fortement hésité avant de la poster ... beaucoup diront qu'il y en existe des milliers (pas si sur ...) et qu'elle est d'une simplicité enfantine, soit, mais si elle peut aider c'est déjà ça !!

############################################
Autre solution ultra épurée :

if (@!rmdir($folder)) echo 'le dossier n\'est pas vide';

A voir également

Ajouter un commentaire Commentaires
Messages postés
25
Date d'inscription
mercredi 9 décembre 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
vraiment bidon pas intéressant du tout .
merci de supprimer le topic il sers a rien
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

le test ?
if (is_dir ($dossier)) {
if (!rmdir ($dossier)) {
echo 'Le répertoire',$dossier, 'n\'a pas pu être effacé';
}
else {
echo $dossieur, ' n\'est pas un répertoire';
}

Pas d'erreur.
Messages postés
285
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
27 juin 2006
1
De toute façon il ne serait pas effacer... Mais il y aurait une erreur faites le test !

Sinon je suis pour faire une lib avec tout un tas de fonction mais faudrait morceler ça dans des fichiers! Je suis en train d'écrire des fonctions en particulier pour les fichiers (listages, récuperation des extension, etc..), je pense poser une source dans la semaine !
Messages postés
57
Date d'inscription
samedi 30 avril 2005
Statut
Membre
Dernière intervention
12 septembre 2009

bonjour,

source très utile merci kohntark
pour répondre à coucou747
rmdir ne peut effacer qu'un dossier vide!
rmdir n'est pas suffisant car cette fonction ci vérifier si le dossier est vide ou non (avec une minimum de "boucle")et ne l'efface que si il est vide!
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
J'épure au max :

function del_empty_folder ($folder) {
if (is_dir($folder)) {
$i=0;
$fh=opendir($folder);
while(($fichier = readdir($fh))!==false) {
$i++;
if ($i > 2) return 2;
}

closedir($fh);
rmdir($folder);
return 1;
}
} else {
return 0;
}
}

C'est plus lisible non ?
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.