Нормализация имен файлов и переименование с помощью 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. ?>

Блог

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

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

далее

Права Доступа в Компонентах: работают не так, как ожидается; но можно накостылить патч

Если в настройках Раздела или Инфоблока NetCat попробовать дать доступ на изменение объекта ВСЕМ, ничего не получится. Просмотр и Добавление работают одним образом, а Изменение, Включение и Удаление -- другим.

далее

Как расставить запятые между тегами на CSS?

Иногда проще что-то сделать на чистом CSS, чем на серверной стороне. Например, расставить запятые между тегами. Попробуем разделить подчеркнутые теги-ссылки на чистом CSS.

далее

Как отресайзить картинки батчем?

Все фотографии, которые вы собираетесь отресайзить, должны быть в одной директории, скажем «uploads». Внутри нее можно сохранить любую структуру директорий. Мы научимся создавать копию этой директории, внутри которой все картинки будут отресайзены, причем только в сторону уменьшения разрешения.

далее

Весь блог тут