PHP重命名每个子目录中的目录

时间:2013-02-26 16:30:27

标签: php file-upload rename

嘿伙计们我正在尝试解决一个棘手的问题。目前我有这样的文件夹结构:

上传/活动-12/1234-副结核病-DOE / [...] 上传/活动-32/1234-副结核病-DOE / [...]

所以有很多事件都有自己的文件夹。在那里有一个子文件夹,其名称类似于用户的ID(1234),后跟名字和姓氏。您可以看到John Doe先生在Event-12和Event-32中都有一个文件夹。

但是如果John Doe改变了他的名字(无论出于何种原因......)。所以我必须递归重命名所有文件夹,否则所有链接都会被破坏。

如何用PHP做到这一点。我可以通过给出正确的路径来轻松地重命名文件夹。有没有什么好的解决方案让PHP搜索所有匹配的目录?

问候。

3 个答案:

答案 0 :(得分: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 :(得分:1)

我建议创建一个使用scandir()的递归函数,并重命名它找到的每个目录。

从PHP手册:http://www.php.net/manual/en/function.scandir.php

这就是说,我建议只使用用户ID作为文件夹名称。您永远不应该使用可以更新的变量来命名目录和存储用户数据。

答案 2 :(得分:0)

Yepp,这是一个数据库驱动的应用程序吗?如果是这样,您不应该尝试解决此问题。当你心脏病发作时,医生不会对症状进行治疗:)你的应用程序正在为相当于三重旁路的编码而尖叫。

我建议你先从文件夹中删除名字。重写你的脚本只创建带有ID的文件夹(我认为这是unqiue) - 这样,如果他们更改了他们的名字并不重要。