【问题标题】:I want to delete files from multiple directories expect an image我想从多个目录中删除文件需要一个图像
【发布时间】:2022-06-22 17:31:39
【问题描述】:

我想从 PHP 中的多个目录中删除文件。问题是当代码运行时它会删除所有内容。我有一个主文件夹,里面有很多文件夹。这些文件夹有我想删除的文件,除了 $filesToKeep 变量中的那个文件。我是一个初学者 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);
    }
  }
 $filesToKeep = array(
     'partner-profil-480.jpg'
 );
 $dirList = glob('*');
 foreach ($dirList as $file) {
   if (!in_array($file, $filesToKeep)) {
       if (is_dir($file)) {
           rrmdir($file);
       } else {
           unlink($file);
       }//END IF
   }//END IF
}//END FOREACH LOOP
?>

【问题讨论】:

  • 在您的foreach 中打印出$file 以查看它的外观以及它是否可能与您想要保留的文件匹配
  • 我试图打印它,但它没有给我任何回报。我只能看到文件结构,这是删除功能之前的另一个代码。

标签: php


【解决方案1】:

我不久前找到了解决方案,只是我忘记发布了。 这里是:

$path = "yourpath";

function dirToArray($dir) { 

$filesToKeep = array(
     'your-file-to-keep'
 );
    $contents = array();
    foreach (scandir($dir) as $node) {      
  
        if ($node == '.' || $node == '..') continue;

        if (is_dir($dir . '/' . $node)) {  
           
            $contents[$node] = dirToArray($dir . '/' . $node); 
 
        } else {
            $contents[] = $node;
            print_r(json_encode($node, JSON_PRETTY_PRINT));
            if(!in_array($node, $filesToKeep)){

                unlink($dir . '/' . $node);

            }
        }
        rmdir($dir . '/' . $node);
        
    }
    
}
$r = dirToArray($path);
print_r($r);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 2019-02-11
    • 2017-03-15
    • 2021-01-22
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多