为了账号安全,请及时绑定邮箱和手机立即绑定

如何递归删除PHP中的目录及其全部内容(文件+子目录)?

如何递归删除PHP中的目录及其全部内容(文件+子目录)?

PHP
汪汪一只猫 2019-07-27 17:15:43
如何递归删除PHP中的目录及其全部内容(文件+子目录)?如何删除PHP中的目录及其全部内容(文件和子目录)?
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您试过手册页中的第一个注意事项吗?rmdir?

 function rrmdir($dir) { 
   if (is_dir($dir)) { 
     $objects = scandir($dir); 
     foreach ($objects as $object) { 
       if ($object != "." && $object != "..") { 
         if (is_dir($dir."/".$object))
           rrmdir($dir."/".$object);
         else
           unlink($dir."/".$object); 
       } 
     }
     rmdir($dir); 
   } 
 }




查看完整回答
反对 回复 2019-07-28
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

建基Pixel开发者的评论,使用SPL的代码片段可能如下所示:

$files = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::CHILD_FIRST);foreach ($files as $fileinfo) {
    $todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink');
    $todo($fileinfo->getRealPath());}rmdir($dir);

注:确实如此。正确检查并使用PHP5.3.0中的FilesystemIterator引入的SkipDOTS标志。当然,$todo可能是if/else..重要的是CHILD_FIRST用于首先在其父(文件夹)之前遍历子(文件)。




查看完整回答
反对 回复 2019-07-28
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

删除路径中的所有文件和文件夹。

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




查看完整回答
反对 回复 2019-07-28
  • 3 回答
  • 0 关注
  • 385 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信