Effacer récursivement un répertoire

Contenu du snippet

Cette fonction permet d'effacer un répertoire présent sur votre serveur avec tout ce qui se trouve à l'intérieur (y compris les sous-répertoires)

Source / Exemple :


<?php
function rdel($path, $deldir = true) {
        // $path est le chemin relatif au fichier php
        // $deldir (paramètre optionel, par défaut à vrai) permet de dire si vous souhaitez supprimer le répertoire (vrai) ou le vider uniquement (faux)

        // on vérifie d'abord que le nom du repertoire contient "/" à la fin, sinon on le lui rajoute
        if ($path[strlen($path)-1] != "/")
                $path .= "/";

        if (is_dir($path)) {
                $d = opendir($path);

                while ($f = readdir($d)) {
                        if ($f != "." && $f != "..") {
                                $rf = $path . $f; // chemin relatif au fichier php

                                if (is_dir($rf)) // si c'est un répertoire on appel récursivement la fonction
                                        rdel($rf);
                                else // sinon on efface le fichier
                                        unlink($rf);
                        }
                }
                closedir($d);

                if ($deldir) // si $deldir est vrai on efface le répertoire
                        rmdir($path);
        }
        else {
                unlink($path);
        }
}
?>

Conclusion :


Attention, il est possible que sous Windows il faille modifier le code pour les délimiteurs de répertoire, remplacez alors les "/" par des "\\"

A voir également

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.