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

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

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

PHP
慕村225694 2019-07-17 14:47:25
如何递归删除PHP中的目录及其全部内容(文件+子目录)?如何删除PHP中的目录及其全部内容(文件和子目录)?
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超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-17
?
千巷猫影

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

建基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-17
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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

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-17
  • 3 回答
  • 0 关注
  • 490 浏览

添加回答

举报

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