Нормализация имен файлов и переименование с помощью PHP пример PHP-скрипта

Это пример кода для переименования файлов, который делает следующее:

  • удаление кириллицы и пробелов вокруг нее;
  • замена группы пробелов одним;
  • замена пробелов подчеркиванием.

Посмотрите нижеследующие примеры, и сразу станет понятно, что и как он делает.

Пусть на входе в директории лежат файлики вида:
 Альхемилла Alchemilla mollis 2.jpg
 Альхемилла Alchemilla mollis.jpg
 Амбрелла Gleichenia Flabellata.jpg
 Амми Dille visnaga.jpg
 Аралия Aralia continentalis.jpg
 Аралия мини Aralia small.jpg
 Аспарагус Виргатус Asparagus Virgatus.jpg
 Аспарагус Плюмоза Asparagus Plumosa.jpg
 ...
На выходе они будут переименованы вот так:
 Alchemilla_mollis_2.jpg
 Alchemilla_mollis.jpg
 Gleichenia_Flabellata.jpg
 Dille_visnaga.jpg
 Aralia_continentalis.jpg
 Aralia_small.jpg
 Asparagus_Virgatus.jpg
 Asparagus_Plumosa.jpg
 ...

Итак, вот соответствующий код:

  1. <?php
  2. /*
  3. Это пример кода для переименования файлов:
  4.     - удаление кириллицы и пробелов вокруг нее
  5.     - замена группы пробелов одним
  6.     - замена пробелов подчеркиванием
  7.  
  8. На входе в директории лежат файлики вида:
  9.     Альхемилла Alchemilla mollis 2.jpg
  10.     Альхемилла Alchemilla mollis.jpg
  11.     Амбрелла Gleichenia Flabellata.jpg
  12.     Амми Dille visnaga.jpg
  13.     Аралия Aralia continentalis.jpg
  14.     Аралия мини Aralia small.jpg
  15.     Аспарагус Виргатус Asparagus Virgatus.jpg
  16.     Аспарагус Плюмоза Asparagus Plumosa.jpg
  17.     ...
  18.  
  19. На выходе переименовываем их к виду:
  20.     Alchemilla_mollis_2.jpg
  21.     Alchemilla_mollis.jpg
  22.     Gleichenia_Flabellata.jpg
  23.     Dille_visnaga.jpg
  24.     Aralia_continentalis.jpg
  25.     Aralia_small.jpg
  26.     Asparagus_Virgatus.jpg
  27.     Asparagus_Plumosa.jpg
  28.     ...
  29. */
  30.  
  31. $dir = "V:\@serving\htdocs";
  32. $files = scandir($dir);
  33.  
  34. // убираем из массива ссылки на саму директорию и ее родителя
  35. unset($files[0]);
  36. unset($files[1]);
  37. unset($files[2]);
  38.  
  39. echo "<table>";
  40.  
  41. foreach ($files as $files ){
  42.     $oldnameBase = $files;
  43.     $oldname = "$dir/$files";
  44.     $files = preg_replace('/\s\s+/', ' ', $files); // вычищает лишние пробелы в строке
  45.     $files = str_replace(" ", "_", $files); // пробелы на подчеркивание
  46.     $files = preg_replace("/[^_.0-9a-z]/i","",$files); // выкидываем все, кроме чисел, подчеркиваний и точек
  47.     while ( $files{0} == "_") { // пока первый символ строки "_"
  48.         $files = substr_replace ($files, "", 0, 1); // удаляем его
  49.     }  
  50.     $newname = $files; // это новое правильное имя файла
  51.  
  52.         # это проверка на случай, если во входных файлах была только кириллица - подсветить
  53.         if ($newname == ".jpg") { echo "<tr><td>$oldnameBase</td><td style='color:white;background-color: red;'>$newname</td></tr>"; }
  54.         else echo "<tr><td>$oldnameBase</td><td>$newname</td></tr>";
  55.  
  56.     # само действие отключено во избежании
  57.     // $newname = "$dir/$newname";
  58.     // rename ("$oldname","$newname");
  59.     }
  60.  
  61. echo "</table>"
  62. ?>

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут