Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Hurtowy rename plików, Problem z kolejnością nazw
Five
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.11.2006

Ostrzeżenie: (0%)
-----


Po 1,5 h googlowania i przeszukiwania forum zdecydowałem się założyć nowy temat.

  1. <?php
  2. function rename_images($w_dir) {
  3. $new = 1;
  4. $dir = opendir($w_dir);
  5. while ($file_name = readdir($dir)) {
  6.  if (($file_name != '.') && ($file_name != '..')) {
  7. while (file_exists($w_dir.$new.'.jpg')) {
  8.  $new++;
  9. }
  10. rename($w_dir.$file_name,$w_dir.$new.'.jpg');
  11.  }
  12. }
  13. closedir($dir);
  14. }
  15. ?>


Skrypt bierze wszystkie pliki z katalogu i zmienia im nazwy na kolejne liczby całkowite, począwszy od 1.

I wszystko byłoby OK, gdyby nie jedna rzecz (przykład): jeśli mam już pliki 1.jpg 2.jpg 3.jpg 4.jpg i wykonam tą funkcję, to nazwy plików zmieniają się na 5.jpg 6.jpg 7.jpg 8.jpg.

Przy zróżnicowanych nazwach liczbowych plików powstają luki, które chciałbym, aby funkcja - oczywiście w ramach jednego wykonania - zapełniła.
Niestety nie udało mi się - jak dotąd - znaleźć rozwiązania.

Byłbym ogromnie wdzięczny za pomoc - może jakiś pomysł co zmienić w tej funkcji?

...
Hmm tak tylko edytuję, żeby przypomnieć zapytanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Five 21.11.2006, 18:44:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
myth
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 25.09.2006

Ostrzeżenie: (0%)
-----


Stworzyłem coś takiego. (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
  1. <?php
  2.  
  3. /** 
  4. * @param $w_dir - folder z plikami
  5. * @param $type - rozszerzenie pliku np. '.jpg'
  6. */
  7. function rename_images($w_dir, $type) 
  8. {
  9. /** tablica z plikami z katalogu */
  10. $files = array();
  11.  
  12. /** tablica z nazwami nowych plików */
  13. $new_files = array();
  14.  
  15. $new = 1;
  16.  
  17. $dir = opendir($w_dir);
  18.  
  19. while ($file_name = readdir($dir)) 
  20. {
  21. if (($file_name != '.') && ($file_name != '..'))
  22. $files[] = str_replace($type,'',$file_name);
  23. }
  24.  
  25. /** ilość elementów tablicy z plikami z katalogu */
  26. $count_files = count($files);
  27.  
  28. for($i = 1; $i <= $count_files; $i++)
  29. $new_files[] = $i;
  30.  
  31. foreach($files as $file_name)
  32. {
  33. /** wyszukuje kolejną wolną nazwę */
  34. while(in_array($new, $files))
  35. $new++;
  36.  
  37. if(!in_array($file_name, $new_files))
  38. {
  39. echo 'Zamieniam <b>'.$file_name.$type.'</b> na <b>'. $new.$type.'</b><br />';
  40. rename($w_dir.$file_name.$type,$w_dir.$new.$type);
  41. $new++;
  42. }
  43. }
  44.  
  45. closedir($dir);
  46.  
  47. }
  48.  
  49. rename_images('img/', '.jpg');
  50. ?>
Go to the top of the page
+Quote Post
Five
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.11.2006

Ostrzeżenie: (0%)
-----


Wielkie dzięki, dokładnie o to mi chodziło (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Człowieku, jesteś moim Bogiem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Coś tam próbowałem pierwotnie wykombinować z tablicami, ale nijak nie mogłem wymyśleć jak to zrobić...

I jeszcze raz - WIELKIE dzięki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
lopik
post
Post #4





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


Ooo Super!! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Mi też się przyda (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

PS. Do "Gotowych...." to dać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

THX
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:56