php删除特定文件夹及其所有内容 [英] php deleting a specific folder and all its contents

查看:121
本文介绍了php删除特定文件夹及其所有内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用php删除包含删除的帖子的文件夹。我正在使用下面的代码,我在网上找到了一个很好的工作。



我想知道如何删除文件夹中的特定文件夹其他文件夹中。



当我使用下面的代码时,怎么做到这一点?
使用:/ dev / images / norman / 8 - >不会删除文件夹8
使用:/ dev / images / norman / - >将删除所有文件夹

 例如:
/ dev / images / norman / 8 - >我只需要删除这个文件夹
/ dev / images / norman / 9
/ dev / images / norman / 10
/ dev / images / norman / 11
/ image / norman / 12

<?php
$ path = $ _SERVER ['DOCUMENT_ROOT']。'/ dev / images / norman / 8'

emptyDir($ path);

函数emptyDir($ path){

// INITIALIZE THE DEBUG STRING
$ debugStr ='';
$ debugStr。=删除内容:$ path< br />< br />;

// PARSE FOLDER
if($ handle = opendir($ path)){

while(false!==($ file = readdir句柄))){

if($ file!=。&&file $ file!=..){

//如果IT FILE THEN DELETE IT
if(is_file($ path。/。$ file)){

if(unlink($ path。/。$ file)){
$ debugStr。=已删除文件:$ file。< br />;
}

} else {

//这是一个目录
//通过目录删除并删除其内容

if($ handle2 = opendir($ path。/。$ file)){

while(false!==($ file2 = readdir($ handle2))){

if($ file2!=。&& $ file2!=.. ){
if(unlink($ path。/。$ file。/。$ file2)){
$ debugStr。=已删除的文件:$ file / $ file2< br />;
}
}

}

}

if(rmdir($ path。/。$ file) ){
$ debugStr。=Directory:$ file。< br />;
}

}

}

}

}
echo $ debugStr;
}

?>


解决方案

  ?$ php 

delete_directory($ dirname){
if(is_dir($ dirname))
$ dir_handle = opendir($ dirname);
if(!$ dir_handle)
return false;
while($ file = readdir($ dir_handle)){
if($ file!=。&& $ file!=..){
if(! is_dir($ dirname。/。$ file))
unlink($ dirname。/。$ file);
else
delete_directory($ dirname。'/'。$ file);
}
}
closedir($ dir_handle);
rmdir($ dirname);
返回true;
}
?>

如果您使用的是5.1及以上版本,



pre> <?php
函数deleteDir($ dir){
$ iterator = new RecursiveDirectoryIterator($ dir);
foreach(new RecursiveIteratorIterator($ iterator,RecursiveIteratorIterator :: CHILD_FIRST)as $ file)
{
if($ file-> isDir()){
rmdir($ file - > getPathname());
} else {
unlink($ file-> getPathname());
}
}
rmdir($ dir);
}

deleteDir(临时);
?>


I'm using php to delete folders containing images of posts that where deleted. I'm using the code below which I found online and does a good job.

I want to know how can I delete only a specific folder in a folder when there are other folders in it.

When I using the code below, how is it possible to do this? Using: /dev/images/norman/8 -> Will not delete folder 8 Using: /dev/images/norman/ -> Will delete all folders

Eg:
/dev/images/norman/8 -> I need to delete only this folder
/dev/images/norman/9
/dev/images/norman/10
/dev/images/norman/11
/dev/images/norman/12

<?php
$path = $_SERVER['DOCUMENT_ROOT'].'/dev/images/norman/8';

emptyDir($path);

function emptyDir($path) { 

    // INITIALIZE THE DEBUG STRING
    $debugStr  = '';
    $debugStr .= "Deleting Contents Of: $path<br /><br />";

    // PARSE THE FOLDER
    if ($handle = opendir($path)) {

        while (false !== ($file = readdir($handle))) {

            if ($file != "." && $file != "..") {

                // IF IT"S A FILE THEN DELETE IT
                if(is_file($path."/".$file)) {

                    if(unlink($path."/".$file)) {
                    $debugStr .= "Deleted File: ".$file."<br />";   
                    }

                } else {

                    // IT IS A DIRECTORY
                    // CRAWL THROUGH THE DIRECTORY AND DELETE IT'S CONTENTS

                    if($handle2 = opendir($path."/".$file)) {

                        while (false !== ($file2 = readdir($handle2))) {

                            if ($file2 != "." && $file2 != "..") {
                                if(unlink($path."/".$file."/".$file2)) {
                                $debugStr .= "Deleted File: $file/$file2<br />";    
                                }
                            }

                        }

                    }

                    if(rmdir($path."/".$file)) {
                    $debugStr .= "Directory: ".$file."<br />";  
                    }

                }

            }

        }

    }
    echo $debugStr;
}

?>

解决方案

<?php

delete_directory($dirname) {
   if (is_dir($dirname))
      $dir_handle = opendir($dirname);
   if (!$dir_handle)
      return false;
   while($file = readdir($dir_handle)) {
      if ($file != "." && $file != "..") {
         if (!is_dir($dirname."/".$file))
            unlink($dirname."/".$file);
         else
            delete_directory($dirname.'/'.$file);    
      }
   }
   closedir($dir_handle);
   rmdir($dirname);
   return true;
 }
?>

if you are using, version 5.1 and above,

<?php
function deleteDir($dir) {
   $iterator = new RecursiveDirectoryIterator($dir);
   foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $file) 
   {
      if ($file->isDir()) {
         rmdir($file->getPathname());
      } else {
         unlink($file->getPathname());
      }
   }
   rmdir($dir);
}

deleteDir("temporary");
?>

这篇关于php删除特定文件夹及其所有内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆