首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除目录内容和SubDirectory内容

删除目录内容和SubDirectory内容
EN

Stack Overflow用户
提问于 2012-10-19 09:43:43
回答 1查看 966关注 0票数 0

我已经设置了一些PHP来删除一个目录,它的内容,以及任何子目录和它的内容…我是PHP的新手,所以我肯定是做错了什么,或者是在以最低效的方式做一些事情。

寻找一些关于如何做得更好的参考或建议...

顺便说一下,这段代码运行得很好。使用PHP 5.3.8。

代码语言:javascript
复制
chmod($main_dir, 0755);
if ($handle = opendir($main_dir)) {
    while (false !== ($entry = readdir($handle))) { 
        $absolute_path = $main_dir.'/'.$entry;
        if ($entry != "." && $entry != "..") {      
            chmod($absolute_path, 0755);
            unlink($absolute_path);

            //check if any folders exist, then delete files within
            if (file_exists($absolute_path) && is_dir($absolute_path)) {
                if ($child_handle = opendir($absolute_path)) {
                    while (false !== ($child_entry = readdir($child_handle))) {             
                    $child_absolute_path = $absolute_path.'/'.$child_entry;
                        if ($child_entry != "." && $child_entry != "..") {              
                            chmod($child_absolute_path, 0755);
                            unlink($child_absolute_path);
                        }
                    }
                    closedir($child_handle);
                }
            }
            rmdir($absolute_path);
        }
    }
    closedir($handle);
}
rmdir($main_dir);

有什么想法吗?非常感谢!我正在使用PHP 5.3.8

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 10:21:11

您可以使用RecursiveDirectoryIterator列出所有文件和文件夹,然后将其删除。请注意,您必须使用RecursiveIteratorIterator::CHILD_FIRST,以便在删除文件夹之前删除文件。

代码语言:javascript
复制
$dir = __DIR__ . "/test";
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
    $file->isDir() ?  rmdir($file) : unlink($file);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12966227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档