Нормализация имен файлов и переименование с помощью 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 ...
Итак, вот соответствующий код:
- <?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
- ...
- */
- $dir = "V:\@serving\htdocs";
- $files = scandir($dir);
- // убираем из массива ссылки на саму директорию и ее родителя
- unset($files[0]);
- unset($files[1]);
- unset($files[2]);
- echo "<table>";
- foreach ($files as $files ){
- $oldnameBase = $files;
- $oldname = "$dir/$files";
- $files = preg_replace('/\s\s+/', ' ', $files); // вычищает лишние пробелы в строке
- $files = str_replace(" ", "_", $files); // пробелы на подчеркивание
- $files = preg_replace("/[^_.0-9a-z]/i","",$files); // выкидываем все, кроме чисел, подчеркиваний и точек
- while ( $files{0} == "_") { // пока первый символ строки "_"
- $files = substr_replace ($files, "", 0, 1); // удаляем его
- }
- $newname = $files; // это новое правильное имя файла
- # это проверка на случай, если во входных файлах была только кириллица - подсветить
- if ($newname == ".jpg") { echo "<tr><td>$oldnameBase</td><td style='color:white;background-color: red;'>$newname</td></tr>"; }
- else echo "<tr><td>$oldnameBase</td><td>$newname</td></tr>";
- # само действие отключено во избежании
- // $newname = "$dir/$newname";
- // rename ("$oldname","$newname");
- }
- echo "</table>"
- ?>