删除目录和子目录

时间:2013-11-04 20:57:32

标签: php function directory delete-file

关于我创建的功能,我有一个小问题。它应该删除每个目录和子目录(当然还有它中的文件),但它绝对没有!

function deletedirandfiles($data, $username){

                //$data correspond au chemin clé, cad à images/users

                $dir = opendir($data); // On définit le répertoire dans lequel on souhaite travailler.

                while (false !== ($fichier = readdir($dir))) // On lit chaque fichier du répertoire dans la boucle.
                {
                    if (($fichier == '.') OR ($fichier == '..') OR ($fichier == '.DS_Store') OR ($fichier != $username)){
                    // On ne fait rien pour ne pas les afficher
                    }

                    elseif (is_file($data.'/'.$fichier)){
                        unlink($data.'/'.$fichier);
                    }

                    elseif (is_dir($data.'/'.$fichier)){
                        $foldertoworkin = "$data/$fichier";
                        deletedirandfiles($foldertoworkin, $username); //On lance la recursivité en reappelant la fonction
                        rmdir($data.'/'.$fichier);
                    }

                    else{

                    }

                }

                closedir($dir);

}

在这种情况下:$ data =“images / users”和$ username =文件夹的名称。

知道为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

与隐藏文件一起使用的OS无关解决方案可以是:

public static function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
      (is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
} 

您可以在http://us3.php.net/rmdir

找到更多示例

问候。