2010-02-05 66 views
7

我该怎么做?有没有kohana 3提供的方法?PHP删除目录的内容

+1

什么是kohona 3? – Moshe 2010-02-05 05:18:27

+1

这是一个PHP框架,尽管这个问题与它没有任何关系。 – 2010-02-05 17:56:48

回答

9

要删除一个目录及其所有内容,您必须编写一些递归删除函数 - 或使用已存在的函数。

您可以在rmdir文档页面的用户注释中找到一些示例;例如,这里的the one proposed by bcairns在2009年8月(引用)

<?php 
// ensure $dir ends with a slash 
function delTree($dir) { 
    $files = glob($dir . '*', GLOB_MARK); 
    foreach($files as $file){ 
     if(substr($file, -1) == '/') 
      delTree($file); 
     else 
      unlink($file); 
    } 
    rmdir($dir); 
} 
?> 
+0

$ files = glob($ dir。'*',GLOB_MARK); - >请解释这一行。谢谢。 – 2010-02-05 05:24:58

+0

'glob'函数*(请参阅http://php.net/glob)*将返回与模式匹配的所有文件,而'*'将匹配所有文件,这意味着glob将返回所有文件的列表'$ dir'指向的目录;; 'GLOB_MARK'意思是“*为每个返回的目录添加一个斜杠*” – 2010-02-05 05:34:47

+2

如果你想删除文件夹的内容 - 不是文件夹本身 - 删除'rmdir($ dir);'行 – PaulSkinner 2013-01-11 16:11:50

0

你尝试过在目录中取消链接?

 chdir("file"); 
    foreach (glob("N*") as $filename) 
     { 
     unlink($filename); 
     } 

这将删除文件名从N个

0

开始我不知道有关的Kohana 3,但我会结合使用DirectoryIterator()unlink()

4

我建议这样,简单直接。

$files = glob('your/folder/' . '*', GLOB_MARK); 
    foreach($files as $file) 
    { 
     if (is_dir($file)) { 
      self::deleteDir($file); 
     } else { 
      unlink($file); 
     } 
    }