PHP Переименуйте все файлы, используя подкаталог в качестве нового имени файла

Как переименовать этот файл ниже?

/Categories
|  /Celebrities
|  |  /Alyssa Milano
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  |  /Britney Spears
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  /Singers
|  |  /Rihanna
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg
|  |  /Katy Perry
|  |  |  1.jpg
|  |  |  2.jpg
|  |  |  3.jpg
|  |  |  4.jpg
|  |  |  5.jpg

Я хочу переименовать 1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg в

Алисса Милано — 1.jpg, Алисса Милано — 2.jpg, Алисса Милано — 3.jpg

Бритни Спирс — 1.jpg, Бритни Спирс — 2.jpg, Бритни Спирс — 3.jpg

Рианна — 1.jpg, Рианна — 2.jpg, Рианна — 3.jpg

Кэти Перри — 1.jpg, Кэти Перри — 2.jpg, Кэти Перри — 3.jpg

Привет @GusDB,

Я изменяю код на это ниже, но ничего не происходит

<?php
/**
* Created by Gus de Boer
* 28-10-2014
* Stackoverflow
*/

function scanParentDir(){
$categories = scandir('categories ');
foreach($categories as $cat){
if(file_exists('categories /'.$cat) && $cat != '.' && $cat != '..'){
changesNamesToSubParentDir($cat);
}
}
}

function changesNamesToSubParentDir($cat){
$albums = scandir('categories /'.$cat);
foreach($albums as $album){
if(file_exists('categories /'.$cat.'/'.$album) && $album != '.' && $album != '..'){
changesNamesToParentDir($album);
}
}
}

function changesNamesToParentDir($album){
$files = scandir('categories /'.$cat.'/'.$album);
foreach($files as $file){
if(file_exists('categories /'.$cat.'/'.$album.'/'.$file) && $file != '.' && $file != '..'){
$filename = pathinfo('categories /'.$cat.'/'.$album.'/'.$file);
rename('categories /'.$cat.'/'.$album.'/'.$file,     'categories /'.$cat.'/'.$album.'/'.$album.$filename['basename']);
}
}
}
?>

Большое спасибо.

0

Решение

Вы можете использовать scandir () (http://php.net/manual/en/function.scandir.php), чтобы получить массив каждого каталога в вашем каталоге «Знаменитости».

scandir('path-to-directory');

Это сгенерирует массив со всеми каталогами. После этого вы можете просмотреть его и снова выполнить scandir () для всех изображений.

Вы можете переименовать файлы с помощью rename () (http://nl3.php.net/manual/en/function.rename.php)

rename('path-to-file<oldname>', 'path-to-file<newname>');

Вы должны действительно попытаться сначала написать код, а потом задать вопросы. Также предоставьте пример кода с тем, что вы уже попробовали.

Я надеюсь, что это сработает для вас!

РЕДАКТИРОВАТЬ:

Эти функции помогут вам. Это просто базовое переименование, вы должны добавить больше проверок и прочее.

<?php
/**
* Created by Gus de Boer
* 28-10-2014
* Stackoverflow
*/

function scanParentDir(){
$directories = scandir('Categories/Celebrities');
foreach($directories as $dir){
if(file_exists('Categories/Celebrities/'.$dir) && $dir != '.' && $dir != '..'){
changesNamesToParentDir($dir);
}
}
}

function changesNamesToParentDir($dir){
$files = scandir('Categories/Celebrities/'.$dir);
foreach($files as $file){
if(file_exists('Categories/Celebrities/'.$dir.'/'.$file) && $file != '.' && $file != '..'){
$filename = pathinfo('Categories/Celebrities/'.$dir.'/'.$file);
rename('Categories/Celebrities/'.$dir.'/'.$file,     'Categories/Celebrities/'.$dir.'/'.$dir.$filename['basename']);
}
}
}
?>
0

Другие решения

Других решений пока нет …