Supprimer 1 u plusieurs répertoires et tout ce qu'il y a dedans

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 024 fois - Téléchargée 27 fois

Contenu du snippet

Toujours pour suivre la mode des fonctions sur fichiers :-) voici une fonction permettant de supprimer un ou plusieurs répertoires, et tout ce qu'ils contiennent.

Elle s'appelle avec un tableau, contenant les répertoires à supprimer.
attention, chemin relatif à la page où vous éxécutez le script, évidemment.

bool supprimer_rep (array sources)

Source / Exemple :


<?php

// bool supprimer_rep (array sources)

function supprimer_rep ($tableau) { // fonction pour supprimer un ou plusieurs repertoires et tout ce qu'il y a dedans
	foreach ($tableau as $dir) {
	if (file_exists ($dir)) {
    	$dh = opendir ($dir);
    	while (($file = readdir ($dh)) !== false ) { 
    		if ($file !== '.' && $file !== '..') {
    			if (is_dir ($dir.'/'.$file)) {
    				$tab = array ($dir.'/'.$file);
    			  supprimer_rep ($tab); // si on trouve un repertoire, on fait un appel recursif pour fouiller ce repertoire
    			}
    			else {
    				if (file_exists ($dir.'/'.$file)) {
    					unlink ($dir.'/'.$file); // si on trouve un fichier, on le supprime
    				}
    			}
    		}
    	}
    	closedir ($dh);
    	if (is_dir ($dir)) {
    		rmdir ($dir); // on supprime le repertoire courant
    	}
    return true;
    }
  }
}

supprimer_rep (array ('test2'));
?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Là en l'occurence ce serait, justement, plutôt is_file () vu que je cherche à savoir si $file es un fichier, pour le supprimer dans ce cas (unlunk). ceci dit, j'ai mis file_exists () parce qu'il me semble que j'avais des soucis sinon, mais je vais réessayer, si c'est plus rapide.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
40
if (file_exists ($dir)) {

id_dir ne serait pas un meilleur choix ici ?

anthomicro avait dit que is_file était plus rapide que file_exists si le fichier existait, peut-être est-ce la même chose pour les répertoires...
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ah, et merci pour le code bien foutu ;-)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
An fait, j'ai hésité. le problème c'est que des fonctions comme ça, j'en ai plein...lol. je les ai regroupées déjà avec une interface dans ma source explorateur PHP.
Donc là, c'est transformé en fonction, (l'explorateur étant une GUI en fait, sous forme de classes), pour être utilisé au coup par coup dans des scripts divers.
Donc oui j'aurais pu regrouper, mais ça m'aurait obligé à faire un package et je n'aurai pas franchement le temps. Et ça a l'avantage de se rechercher plus facilement sur le moteur de recherche de CS.

mais bon, pourquoi pas, par la suite, je ferai un gros package :-)

Et oui, j'ai pas gdchose à faire dans mon nouveau taf malheureusement : ils sont débordés, et jusqu'à demain n'ont pas le temps de s'occuper de moi ;-) alors je m'auto-forme, et je prends un peu de temps pour moi aussi lol.
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

malalam, plutot de faire un source pour chaque fonction sur un ou plusieurs repertoires/fichiers, serait il pas mieux de faire une bibliotheque de fonction ou encore une classe permettant de toutes les regroupées plutot que de devoir les postées une a une.

Je trouve ca plus pratique d'avoir un fichier a prendre plutot que plusieurs petit bout de code a prendre en plus pour toi si tu fais une mise a jour, ca sera plus simple de modifier un fichier que plusieurs.

Sinon pour tes codes sont bien foutu ( tu t'emmerdes vraiment a ton taf pour avoir le temps de faire ca ;) )

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.