2013-02-26 78 views
0

嘿傢伙即時嘗試解決一個棘手的問題。目前,我有這樣的folderstructure:在每個子目錄中的PHP重命名目錄

上傳/事件-12/1234-強尼 - 伊/ [...] 上傳/事件-32/1234-強尼 - 伊/ [...]

所以有一個許多事件與他們自己的文件夾。在那裏有一個子文件夾,它們被命名爲用戶名(1234),後跟名和姓。你可以看到John Doe先生在Event-12和Event-32中都有一個文件夾。

但是如果John Doe改變了他的名字(不管出於何種原因......)。所以我必須遞歸重命名所有文件夾,否則所有鏈接都會中斷。

如何用PHP做到這一點。通過給出正確的路徑,我可以很容易地重命名一個文件夾。有什麼好的解決方案讓PHP搜索所有匹配的目錄?

問候。

回答

2

您可以列出所有文件夾,如link所示,然後重命名您想要的文件夾。

<?php 
if ($handle = opendir('.')) { 
    $blacklist = array('.', '..', 'somedir', 'somefile.php'); 
    while (false !== ($file = readdir($handle))) { 
     if (!in_array($file, $blacklist)) { 
      echo "$file\n"; 
     } 
    } 
    closedir($handle); 
} 
?> 
1

我建議創建一個遞歸函數,使用scandir()並重命名它找到的每個目錄。

從PHP手冊:http://www.php.net/manual/en/function.scandir.php

這是說,我建議只需使用您的文件夾名稱的用戶ID。您不應該使用可更新的變量來命名目錄並存儲用戶數據。

+0

ja,那正是我在尋找的! ID只是不可能的,因爲有些人想要搜索用戶文件夾。 :( – 2013-02-26 16:40:26

0

葉普,這是一個數據庫驅動的應用程序?如果是這樣,你不應該試圖解決這個問題。當您發生心臟病時,醫生不會治療症狀:)您的應用程序正在尖叫三重旁路的編碼。

我建議你先從文件夾中取出名稱。重寫您的腳本只能創建帶有ID的文件夾(我認爲這是不合要求的) - 這樣,如果他們更改了名稱,這並不重要。