php 删除目录 递归-php如何递归删除中文目录?

问题描述

php如何递归删除中文目录?
function delete_folder($tmp_path){
    if(!is_writable($tmp_path) && is_dir($tmp_path)){
        chmod($tmp_path,0777);
    }
    $handle = opendir(iconv('utf-8','gb2312',$tmp_path));
    while(($tmp=readdir($handle)) !== false){
        if($tmp!='..' && $tmp!='.' && $tmp!=''){
            if(is_writable($tmp_path.'/'.$tmp) && is_file($tmp_path.'/'.$tmp)){
                unlink($tmp_path.'/'.$tmp);
            }elseif(!is_writable($tmp_path.'/'.$tmp) && is_file($tmp_path.'/'.$tmp)){
                chmod($tmp_path.'/'.$tmp,0666);
                unlink($tmp_path.'/'.$tmp);
            } 

            if(is_writable($tmp_path.'/'.$tmp) && is_dir($tmp_path.'/'.$tmp)){
                delete_folder($tmp_path.'/'.$tmp);
            }elseif(!is_writable($tmp_path.'/'.$tmp) && is_dir($tmp_path.'/'.$tmp)){
                chmod($tmp_path.'/'.$tmp,0777);
                delete_folder($tmp_path.'/'.$tmp);
            }
        }
    }
    closedir($handle);
    rmdir(iconv('utf-8','gb2312',$tmp_path));
    if(!is_dir($tmp_path)){
        return true;
    }else{
        return false;
    }
}

只要目录名字是中文或者目录里包含中文文件,这个目录就删除不了,甚是头疼,求解!
看看这个递归删除目录的函数,哪里需要修改?

解决方案

http://zhidao.baidu.com/link?url=p5BzEb5itfe0MWdotxGfBFeQMBMkRZazbFhTFwXFc-IMEY_wy3TvP0q-XMX1BL7BtwhQnJoED64cT8xDsroxqq

解决方案二:

遍历目录

$dir = 'C:UsersDDesktopbooks'; $it = new
RecursiveDirectoryIterator($dir); $iterator = new
RecursiveIteratorIterator($it,
RecursiveIteratorIterator::CHILD_FIRST); foreach($iterator as $path) {
echo $path->__toString() , '
'; }

//循环删除目录和文件函数

function delDirAndFile( $dirName ) { if ( $handle = opendir(
"$dirName" ) ) { while ( false !== ( $item = readdir( $handle ) )
) { if ( $item != "." && $item != ".." ) { if ( is_dir(
"$dirName/$item" ) ) { delDirAndFile( "$dirName/$item" ); }
else { if( unlink( "$dirName/$item" ) )echo "成功删除文件:
$dirName/$item
n"; } } } closedir( $handle
); if( rmdir( $dirName ) )echo "成功删除目录: $dirName
n"; }

}

时间: 2024-11-01 10:59:54

php 删除目录 递归-php如何递归删除中文目录?的相关文章

php递归遍历和和删除文件夹下的所有文件

php递归删除目录下的所有文件: <?php header("content-type:text/html;charset=utf-8"); /** *删除指定目录()删除子目录和文件 *@path 文件目录路径 string *@return void */ function hello($path){ //1:判断删除目录是否存在 if(!file_exists($path)){ return false; } //2:将目录内容全部获取出 $list = scandir($

php创建和删除目录函数介绍和递归删除目录函数分享_php技巧

mkdir() - 新建目录 复制代码 代码如下: – 语法:bool mkdir (string pathname [,int mode]) – 尝试新建一个由 pathname 指定的目录. rmdir() - 删除目录 复制代码 代码如下: – 语法:bool rmdir ( string dirname ) – 尝试删除 dirname 所指定的目录. 该目录必须是空的,而且要有相应的权限.如果成功则返回 TRUE,失败则返回 FALSE. unlink - 删除文件 复制代码 代码如下

C++递归删除一个目录实例_C 语言

本文实例讲述了C++递归删除一个目录的实现方法.分享给大家供大家参考.具体方法如下: CFindFile的使用框架如下: 复制代码 代码如下: void Recurse(LPCTSTR pstr)  {     CFileFind finder;       // build a string with wildcards     CString strWildcard(pstr);     strWildcard += _T("\\*.*");       // start work

全排列的递归与非递归实现浅析

全排列问题在公司笔试的时候很常见,这里介绍其递归与非递归实现. 递归算法 1.算法简述 简单地说:就是第一个数分别以后面的数进行交换E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次递归进行. void swap(string &pszStr,int k,int m) { if(k==m) return ; c

QQ输入法手机版如何删除中文或英文自造词

  QQ输入法手机版删除中文或英文自造词的方法如下: 在中文(拼音.笔画)或英文输入过程中,候选区中有不需要的自造词,那么点击删除键即可进入删除用户自造词模式,在候选区中点击需要删除的自造词,即可删除(非用户自造词不可删除).

如何使用递归和非递归方式反转单向链表

以下是对使用递归和非递归方式反转单向链表的示例进行了详细的分析介绍,需要的朋友可以过来参考下   问题: 给一个单向链表,把它从头到尾反转过来.比如: a -> b -> c ->d 反过来就是 d -> c -> b -> a . 分析:假设每一个node的结构是: 复制代码 代码如下: class Node {  char value;  Node next; } 因 为在对链表进行反转的时候,需要更新每一个node的"next"值,但是,在更新

二分查找的递归和非递归

查找算法 常见的查找算法大概有顺序查找.二分查找.二叉排序树查找.哈希表法(散列表).分块查找等, 下面简单了解一下其他几种查找算法. 1.顺序查找 也就是暴力方法,按顺序比较每个元素,直到找到关键字为止. 条件:无序或有序数据,时间复杂度:O(n) 2.二叉排序树查找 二叉排序树的性质: 1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值: 3. 它的左.右子树也分别为二叉排序树. 在二叉查找树b中查找x的过

求二分查找的递归和非递归的时间空间效率比较

问题描述 求二分查找的递归和非递归的时间空间效率比较 求二分查找的递归和非递归的时间空间效率比较,为什么在刘汝佳的书上说,一般用非递归方法 解决方案 递归算法写起来简单,但是有两个不足,一个是调用接口的开销,函数调用本身是有开销的.另一个是堆栈内存比较小,递归调用层次深,容易引起堆栈溢出错误(著名的stack overflow).非递归没有这个问题.还有就是一些编程语言(很久很久以前,在你出生的年代之前),是没有函数调用的,那么就不能递归了. 解决方案二: 递归牵涉到环境保存和环境恢复操作,因此

二叉树的遍历详解(前序中序后序层次-递归和非递归)

二叉树 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁.而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现.在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点 前序遍历 前序遍历按照"根结点-左孩子-右孩子"的顺序进行访问. 递归实现 void PreOrder(Tree