繁体   English   中英

PHP函数,有一点帮助

[英]PHP function, a little help

我需要一个在目录中搜索最多5个文件的函数(该目录中仅MAX 5个文件)。 这些文件几乎具有相同的名称,ID nr以file 1的'_1'结尾, file 2 '_2'等。它仅以下划线结尾,然后是file-nr。 例:

   filename = id.'_1.jpg'; // File 1.

这是棘手的部分,请仔细阅读:现在,我需要搜索该目录,如果有(例如) a file1, and file3, BUT NO file2, then rename file3 to file2.

换句话说,我需要在名称之间找到“空白”并重命名所有文件,以便它们按顺序排列,而没有“空白”。

再举一个例子,如果dir包含3个以'_1.jpg' and '_3.jpg' and '_4.jpg'的文件,我希望它重命名文件,使其分别为'_1.jpg' and '_2.jpg' and '_3.jpg' ,它们顺序排列...

正如我所说的,此文件夹中最多包含5个文件。

请帮帮我...用PHP编写函数不是很好...谢谢

PS:如果我不清楚,请告诉我,我将举一些例子。

这不一定是最优雅的解决方案,但它可能会让您入门。

function shuffleFiles($dirPath,$basename, $extension)
{
   $MAXFILES = 5;
   $originalFilenames = array();
   for($i = 1; $i <= $MAXFILES; $i++) // one-based
   {
     $name = $dirPath . '/' . $basename . '_' . $i . '.' . $extension;
     if(file_exists($name))
     {
        $originalFilenames[] = $name;
     }
   }
   $i = 0;
   foreach($originalFilenames as $oldname)
   {
      $i++;
      $newname = $dirPath . '/' . $basename . '_' . $i . '.' . $extension;
      rename($oldname, $newname);
   }     
}

每个目录可处理任意数量的文件

function cleanUpMess($dir, $ext, $delimiter) {

  $files = glob($dir.'/*.'.$ext);
  $c = 1;

  foreach ($files as $file) {

    $secondPart = strrchr($file, $delimiter);
    $name = explode($secondPart, $file);
    $name = $name[0];

    $newFile = $name.$delimiter.$i.'.'.$ext;
    rename($file, $new);
    $c++;

  }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM