【问题标题】:PHP rename directory in every subdirectoryPHP重命名每个子目录中的目录
【发布时间】:2013-02-12 05:01:12
【问题描述】:

大家好,我正在尝试解决一个棘手的问题。目前我有一个这样的文件夹结构:

上传/Event-12/1234-Johne-Doe/[…] 上传/Event-32/1234-Johne-Doe/[…]

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

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

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

您好。

【问题讨论】:

    标签: php file-upload rename


    【解决方案1】:

    您可以像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);
    }
    ?>
    

    【讨论】:

      【解决方案2】:

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

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

      话虽如此,我建议您只使用用户 ID 作为文件夹名称。永远不要使用可以更新的变量来命名目录和存储用户数据。

      【讨论】:

      • ja,这正是我正在寻找的!仅 ID 是不可能的,因为有些人想搜索用户文件夹。 :(
      【解决方案3】:

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

      我建议您首先从文件夹中删除名称。重写您的脚本以仅创建具有 ID 的文件夹(我假设这是 unqiue) - 这样,他们是否更改名称都没关系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        相关资源
        最近更新 更多