2014-10-28 86 views
0

如何在下面重命名此文件?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.JPG2.JPG3.JPG4.JPG5.JPG

賈靜雯米蘭 - 1。 jpg,Alyssa Milano - 2.jpg,Alyssa Milano - 3.jpg

Britney Spears - 1.jpg,布蘭妮斯皮爾斯 - 2.jpg,布蘭妮斯皮爾斯 - 3.jpg

蕾哈娜 - 1.JPG,蕾哈娜 - 2.JPG,蕾哈娜(Rihanna) - 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']); 
     } 
    } 
} 
?> 

非常感謝你。

+1

書寫代碼將是一個好的開始。你到目前爲止嘗試過什麼? – 2014-10-28 14:07:26

回答

0

您可以使用scandir()(http://php.net/manual/en/function.scandir.php)獲取「Celebrities」目錄中每個目錄的數組。

scandir('path-to-directory'); 

這將產生與所有的目錄的數組。在此之後,您可以遍歷它,併爲所有圖像再次執行scandir()。

您可以重命名重命名()的文件(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

喜GusDB 希望你能幫助我固定 – Anwar 2014-10-28 16:40:39

+0

我爲您創造 – 2014-10-28 18:42:49

+0

嗨@GusDB工作功能, 您可以查看回我的問題? 我改變你的代碼,但注意到發生:( – Anwar 2014-10-29 02:15:14

相關問題