php删除特定文件夹及其所有内容 [英] php deleting a specific folder and all its contents
本文介绍了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屋!
查看全文