循环并重命名php中的所有子文件夹

时间:2017-07-16 12:55:45

标签: php directory subdirectory

我很难找到有关循环文件夹中所有子文件夹并使用PHP重命名它们的任何信息。我正在重命名它们,以便我不会对子文件夹的数量达到任何限制。

目前我的用户文件夹结构如下:

images/logos/1216/logo.jpg
images/logos/11437/logo.jpg
images/logos/234438/logo.jpg

所以我想循环浏览'徽标中的所有文件夹。并将它们重命名如下:

images/users/1/1216/logos/logo.jpg
images/users/11/11437/logos/logo.jpg
images/users/234/234438/logos/logo.jpg

要计算新的子文件夹名称,我将采用现有的用户ID(即11437并除以1000)。

实际问题是如何遍历所有子文件夹以及重命名文件夹结构的最佳方法。

1 个答案:

答案 0 :(得分:0)

如果我对这里的第一行代码是正确的,那么你应该像第二行一样得到一个数组。首先测试并备份文件。

这应该列出所有用户ID或目录并循环遍历它们 如果副本成功(true),则取消链接旧文件,否则返回错误消息。

  

这是未经测试的代码

//$arr = array_filter(glob('images/logos/*'), 'is_dir');
$arr = array("images/logos/1216","images/logos/11437","images/logos/234438");
//var_dump($arr);

foreach($arr as $dir){
    $UID = str_replace("images/logos/", "", $dir);
    $newpath = "images/users/" . floor($UID/1000) . "/" . $UID . "/logos/logo.jpg";
    $oldpath = $dir . "/logo.jpg";
    if(copy($oldpath, $newpath)){
        unlink($oldpath);
    }else{
        echo "error with file " . $oldpath . "<br>\n";
        $error = true;
    }
}

if(!$error) unlink("images/logos");

EDIT;刚刚注意到我最近使用了Excel太多了。改变了&amp;到 EDIT2;现在在我自己的页面上测试代码,似乎glob返回路径。包含用于获取UserID的代码。