Comment supprimer le contenu d'un répertoire en PHP ?
Réponses rédigées par Antoine
Dernière mise à jour : 2020-12-03 14:42:54
Question
Comment faire pour supprimer le contenu d'un répertoire en PHP ?
Réponse
Pour supprimer le contenu d'un répertoire, en PHP, tout en supprimant uniquement les fichiers, mais pas les sous-dossiers, ni leurs contenus, vous pouvez procédez comme suit :
- Récupérer les chemins d'accès vers tous les fichiers via la fonction PHP
glob()
. - Parcourir la liste des fichiers avec une boucle
foreach
. - Vérifier si les fichiers sont valides avec la fonction
is_file()
. - Supprimer les fichiers via la fonction
unlink()
.
Exemple de script PHP pour supprimer uniquement les fichiers contenus dans un répertoire :
<?php
$repertoire = "test";
$fichiers = glob($repertoire.'/*');
foreach($fichiers as $fichier)
{
if(is_file($fichier))
{
unlink($fichier);
}
}
?>
Réponse
Si vous voulez supprimer tous les fichiers du répertoire et de ses sous-répertoires, sans supprimer l'arborescence des dossiers, en PHP, procédez comme suit :
<?php
$repertoire = "test/";
$repertoire = new RecursiveDirectoryIterator($repertoire, FilesystemIterator::SKIP_DOTS);
$repertoire = new RecursiveIteratorIterator($repertoire, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($repertoire as $fichier)
{
if (!is_dir($fichier))
{
unlink($fichier);
}
}
?>
Et si vous voulez supprimer tout le contenu du répertoire, sans aucune distinction :
<?php
$repertoire = "test/";
$repertoire = new RecursiveDirectoryIterator($repertoire, FilesystemIterator::SKIP_DOTS);
$repertoire = new RecursiveIteratorIterator($repertoire, RecursiveIteratorIterator::CHILD_FIRST);
foreach ($repertoire as $fichier)
{
if (is_dir($fichier))
{
rmdir($fichier);
}
else if (!is_dir($fichier))
{
unlink($fichier);
}
}
?>