2011-05-19 39 views
4

如何從文件夾中刪除多個文件?從文件夾中刪除多個文件

code:$query=$this->main_model->get($id); 

if($query->num_rows()>0) 
{ 
     foreach ($query->result() as $row) 
     { 
      unlink("uploads/".$id."/".$row->img_name); 
      unlink("uploads/".$id."/".$row->img_name_tn); 
      unlink("uploads/".$id."/".$row->file); 
      unlink("uploads/".$id."/".$row->file2); 
      unlink("uploads/".$id."/Thumbs.db"); 
     } 
      rmdir("uploads/".$id); 
} 

這裏是我使用的代碼,但是它刪除了那些文件。以及如何刪除文件夾中的所有文件?

回答

3

最初:

<?php 
function rrmdir($dir) { 
    if (is_dir($dir)) { 
    $objects = scandir($dir); 
    foreach ($objects as $object) { 
     if ($object != "." && $object != "..") { 
     if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object); 
     } 
    } 
    reset($objects); 
    rmdir($dir); 
    } 
} 
?> 
+0

@keyur:請閱讀:[接受答案如何工作?](http://meta.stackexc hange.com/questions/5234/5235#5235) – 2011-06-04 06:16:00

1

您需要使用遞歸函數。來自rmdir頁面的評論已經寫了關於如何去做的功能,參見http://www.php.net/manual/en/function.rmdir.php#98622。此代碼將刪除文件夾及其中的所有內容。從php.net

function delete_files($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); 
     } 
    } 
    closedir($dir_handle); 
    return true; 
} 
1

你可以做這樣的

<?php 
$dir = '/uploads/'; 
if ($handle = opendir($dir)) { 
    while (false !== ($file = readdir($handle))) { 
     if ($file != "." && $file != "..") { // strip the current and previous directory items 
      unlink($dir . $file); // you can add some filters here, aswell, to filter datatypes, file, prefixes, suffixes, etc 
     } 
    } 
    closedir($handle); 
} 
?> 
2

,我發現這個在php.net

"The shortest recursive delete possible" 

function rrmdir($path) { 
    return is_file($path)? 
    @unlink($path): 
    array_map('rrmdir',glob($path.'/*'))[email protected]($path) 
    ; 
}