Maison > Article > développement back-end > Comment supprimer récursivement un répertoire et tout son contenu (fichiers + sous-répertoires) en PHP
PHP : PHP (Hypertext Preprocessor) est un langage de script côté serveur open source largement utilisé, spécialement conçu pour le développement Web. Il a été créé à l'origine par Rasmus Lerdorf en 1994 et est depuis devenu un langage puissant utilisé par des millions de développeurs dans le monde.
PHP est principalement utilisé pour développer des pages Web dynamiques et des applications Web. Il permet aux développeurs d'intégrer du code PHP dans HTML, ce qui facilite le mélange de la logique côté serveur avec la couche de présentation. Les scripts PHP sont exécutés sur le serveur et le HTML résultant est envoyé au navigateur du client.
Il existe plusieurs façons de supprimer récursivement un répertoire et l'intégralité de son contenu (fichiers et sous-répertoires) en PHP. Voici trois méthodes courantes :
Utiliser les fonctions rmdir() et unlink() de manière récursive
Utilisation de la fonction glob()
Utilisation des classes RecursiveDirectoryIterator et RecursiveIteratorIterator
Pour supprimer récursivement un répertoire et tout son contenu (fichiers et sous-répertoires) en PHP à l'aide des fonctions rmdir() et unlink(),
<?php function deleteDirectory($dirPath) { if (is_dir($dirPath)) { $files = scandir($dirPath); foreach ($files as $file) { if ($file !== '.' && $file !== '..') { $filePath = $dirPath . '/' . $file; if (is_dir($filePath)) { deleteDirectory($filePath); } else { unlink($filePath); } } } rmdir($dirPath); } } ?>
La fonction deleteDirectory() est définie, qui prend le chemin du répertoire comme paramètre.
Il vérifie si le chemin donné est un répertoire en utilisant is_dir($dirPath). Si ce n'est pas un répertoire, la fonction renvoie.
S'il s'agit d'un répertoire, il utilise scandir($dirPath) pour récupérer une liste de fichiers et de répertoires dans le répertoire spécifié.
Il parcourt chaque fichier et répertoire, à l'exclusion des entrées spéciales "." et "..".
Pour chaque entrée, il construit le chemin complet du fichier en concaténant le chemin du répertoire et le nom du fichier.
Si l'entrée est un sous-répertoire, la fonction deleteDirectory() est appelée de manière récursive sur ce sous-répertoire.
Si l'entrée est un fichier, unlink($filePath) est utilisé pour supprimer le fichier.
Après avoir traité tous les fichiers et sous-répertoires, rmdir($dirPath) est appelé pour supprimer le répertoire vide lui-même.
Pour utiliser cette fonction, appelez-la simplement avec le chemin du répertoire que vous souhaitez supprimer :
<?php $directoryPath = '/path/to/directory'; deleteDirectory($directoryPath); ?>
Assurez-vous que vous disposez des autorisations appropriées pour supprimer les fichiers et répertoires dans le chemin spécifié.
Pour supprimer récursivement un répertoire et tout son contenu (fichiers et sous-répertoires) en PHP à l'aide de la fonction glob(),
<?php function deleteDirectory($dirPath) { $files = glob($dirPath . '/*'); foreach ($files as $file) { if (is_dir($file)) { deleteDirectory($file); } else { unlink($file); } } rmdir($dirPath); } ?>
La fonction deleteDirectory() est définie, qui prend le chemin du répertoire comme paramètre.
Il utilise la fonction glob() avec le modèle $dirPath . '/*' pour récupérer une liste de fichiers et de répertoires dans le répertoire spécifié.
Il parcourt chaque entrée obtenue à partir de glob().
Pour chaque entrée, il vérifie s'il s'agit d'un répertoire en utilisant is_dir($file).
S'il s'agit d'un répertoire, la fonction deleteDirectory() est appelée de manière récursive sur ce sous-répertoire pour supprimer son contenu.
S'il s'agit d'un fichier, unlink($file) est utilisé pour supprimer le fichier.
Après avoir traité tous les fichiers et sous-répertoires, rmdir($dirPath) est appelé pour supprimer le répertoire vide lui-même.
Pour utiliser cette fonction, appelez-la simplement avec le chemin du répertoire que vous souhaitez supprimer :
<?php $directoryPath = '/path/to/directory'; deleteDirectory($directoryPath); ?>
Assurez-vous que vous disposez des autorisations appropriées pour supprimer les fichiers et répertoires dans le chemin spécifié.
Pour supprimer récursivement un répertoire et tout son contenu (fichiers et sous-répertoires) en PHP à l'aide des classes RecursiveDirectoryIterator et RecursiveIteratorIterator,
<?php function deleteDirectory($dirPath) { $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($dirPath, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST ); foreach ($iterator as $file) { if ($file->isDir()) { rmdir($file->getPathname()); } else { unlink($file->getPathname()); } } rmdir($dirPath); } ?>
La fonction deleteDirectory() est définie, qui prend le chemin du répertoire comme paramètre.
Il crée un objet RecursiveDirectoryIterator en utilisant le chemin de répertoire spécifié. L'indicateur RecursiveDirectoryIterator::SKIP_DOTS est utilisé pour exclure les entrées spéciales "." et ".." de l'itération.
Il crée un objet RecursiveIteratorIterator pour parcourir les fichiers et répertoires de manière récursive. L'indicateur RecursiveIteratorIterator::CHILD_FIRST est utilisé pour garantir que les éléments enfants sont traités avant les éléments parents.
Il parcourt chaque fichier et répertoire en utilisant une boucle foreach sur l'itérateur $.
Pour chaque entrée, il vérifie s'il s'agit d'un répertoire en utilisant $file->isDir().
S'il s'agit d'un répertoire, rmdir($file->getPathname()) est utilisé pour supprimer le répertoire.
If it's a file, unlink($file->getPathname()) is used to delete the file.
After processing all files and subdirectories, rmdir($dirPath) is called to remove the empty directory itself.
To use this function, simply call it with the path of the directory you want to delete:
<?php $directoryPath = '/path/to/directory'; deleteDirectory($directoryPath); ?>
Make sure you have proper permissions to delete the files and directories within the specified path.
These methods provide different approaches to achieve the same result. You can choose the method that suits your specific requirements and coding preferences. Remember to handle permissions properly to ensure that you have the necessary privileges to delete files and directories.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!