2013-02-26 79 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的文件夹(我认为这是不合要求的) - 这样,如果他们更改了名称,这并不重要。