Maison  >  Article  >  développement back-end  >  Comment supprimer un répertoire non vide en php

Comment supprimer un répertoire non vide en php

藏色散人
藏色散人original
2020-07-21 11:40:052877parcourir

Comment supprimer un répertoire non vide en PHP : personnalisez d'abord une fonction delDir ; puis parcourez le répertoire et lisez les fichiers ou dossiers du répertoire puis connectez les fichiers du répertoire au répertoire courant ; enfin, appelez delete récursivement le sous-répertoire et utilisez la fonction "rmdir" pour supprimer le répertoire vide.

Comment supprimer un répertoire non vide en php

php rmdir utilise une fonction récursive pour supprimer les répertoires non vides

Nous savons tous que le php rmdir( ) La fonction utilise Pour supprimer des répertoires vides, mais si nous voulons supprimer des répertoires non vides, nous devons supprimer les fichiers ou sous-répertoires dans les répertoires non vides. Cet article explique comment utiliser les fonctions récursives PHP pour supprimer les répertoires non vides. dans le besoin peut s'y référer.

Tout d'abord, laissez-moi vous présenter la fonction rmdir().

Fonction php rmdir()

rmdir — supprimer les répertoires vides

Recommandé : "Tutoriel PHP"

Syntaxe :

bool rmdir ( string $dirname [, resource $context ] )

Essayez de supprimer le répertoire spécifié par dirname. Le répertoire doit être vide et doit disposer des autorisations appropriées. Une erreur de niveau E_WARNING sera générée en cas d'échec.

Paramètres :

dirname : Le chemin d'accès au répertoire.

contexte : Ajout de la prise en charge du contexte dans PHP 5.0.0.

php rmdir() supprime un répertoire non vide

Comme mentionné ci-dessus, la fonction rmdir() ne peut supprimer que les répertoires vides. S'il s'agit d'un répertoire non vide, vous devez entrer. le répertoire en premier et utiliser la fonction unlink() supprime tous les fichiers du répertoire, puis revient pour supprimer le répertoire vide. S'il y a des sous-répertoires dans le répertoire et que le répertoire n'est pas vide, vous devez utiliser la méthode récursive. Le code source de la fonction récursive personnalisée pour supprimer un répertoire est le suivant :

<?php
/* by http://www.manongjc.com/article/27.html*/
function delDir($directory){//自定义函数递归的函数整个目录
    if(file_exists($directory)){//判断目录是否存在,如果不存在rmdir()函数会出错
        if($dir_handle=@opendir($directory)){//打开目录返回目录资源,并判断是否成功
            while($filename=readdir($dir_handle)){//遍历目录,读出目录中的文件或文件夹
                if($filename!=&#39;.&#39; && $filename!=&#39;..&#39;){//一定要排除两个特殊的目录
                    $subFile=$directory."/".$filename;//将目录下的文件与当前目录相连
                    if(is_dir($subFile)){//如果是目录条件则成了
                        delDir($subFile);//递归调用自己删除子目录
                    }
                    if(is_file($subFile)){//如果是文件条件则成立
                        unlink($subFile);//直接删除这个文件
                    }
                }
            }
            closedir($dir_handle);//关闭目录资源
            rmdir($directory);//删除空目录
        }
    }
}
 
delDir("mydir");//调用delDir函数
 
?>

En plus du traitement de suppression récursive de répertoires non vides, nous pouvons également utiliser la commande du système d'exploitation "rm -rf" pour supprimer répertoires non vides, mais nous devons également tenir compte de la sécurité et des considérations multiplateformes et essayer de ne pas les utiliser.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn