Функция PHP, небольшая помощь - PullRequest
0 голосов
/ 25 декабря 2009

Мне нужна функция, которая ищет в директории до 5 файлов (только директории MAX 5 в директории). Файлы имеют почти одинаковые имена, идентификатор nr заканчивается '_1' для file 1, '_2' для file 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: Если мне неясно, дайте мне знать, и я приведу еще несколько примеров ...

Ответы [ 2 ]

1 голос
/ 25 декабря 2009

Это не обязательно самое элегантное решение, но оно может помочь вам начать работу.

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);
   }     
}
0 голосов
/ 25 декабря 2009

Работает с любым количеством файлов в директории

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++;

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...