PHP işlevi, küçük bir yardım

2 Cevap

Ben 5 dosya (dir sadece MAX 5 dosya) kadar bir dir arar bir işlev gerekir. Dosyalar aynı adları neredeyse bir kimlik nr '_1' file 1 için, '_2' için file 2 vb sadece biter ile biten Bir çizgi, ve sonra dosya-nr. Örnek:

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

İşte zor bir parçasıdır, dikkatli okuyun: Şimdi bu dir aramak gerekir ve varsa (örneğin) a file1, and file3, BUT NO file2, then rename file3 to file2.

Diğer bir deyişle, ben isimler arasında 'boşluklar' bulmak ve onlar için gelir böylece 'boşluk' olmadan, tüm dosyaları yeniden adlandırmak gerekir.

Dir '_1.jpg' and '_3.jpg' and '_4.jpg' ben onlar böylece dosyaları yeniden adlandırmak istiyorum ile biten 3 dosyalar varsa, bu yüzden başka bir örnek, '_1.jpg' and '_2.jpg' and '_3.jpg', onlar için gelir ...

Bu klasörde max 5 dosya var dediğim gibi.

Please help me out... I am not that good in writing functions in PHP... Thanks

PS: Ben açık değilim, bana bildirin ve ben biraz daha örneklerde koyacağız ...

2 Cevap

Bu mutlaka en zarif çözüm değil, ancak başlamak olabilir.

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);
   }     
}

Dir başına dosyaları herhangi bir sayıda İşleri

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

  }

}