为了账号安全,请及时绑定邮箱和手机立即绑定

重命名php中目录的所有子目录

重命名php中目录的所有子目录

PHP
摇曳的蔷薇 2021-08-27 10:01:08
我有一个像这样的目录结构:.├── uploads|   ├── 1|   |   ├── example.jpeg|   |   └── example.jpeg|   ├── 2|   |   └── example.jpeg|   ├── 3|   |   ├── example.jpeg|   |   ├── example.jpeg|   |   └── example.jpeg我希望重命名 firectory 中的所有目录uploads(在我的示例中,这些目录称为1,2和3)。我想根据它们当前的名称重命名所有这些目录。例如,我想1成为1asd,2以2asd及3对3asd。我已经寻找了类似的问题,并找到了This one(虽然这个问题看起来很相似,但实际上是关于其他问题)和this one,这是关于重命名文件的。我试过:if ($handle = opendir('../path/to/uploads')) {    while (false !== ($fileName = readdir($handle))) {        $newName = $fileName.'asd';        rename($fileName, $newName);    }    closedir($handle);}这不起作用,因为 all$filename总是.. 我的猜测是因为它是关于目录而不是文件。我该如何定位目录?边注1:我希望重命名的目录包含我不想丢失/删除的文件。在我的例子中,它们都被称为example.jpeg.边注2:我的uploads目录路径是正确的,我对此进行了测试。
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您要检查以确保它是一个目录并检查它是否不是当前目录.或父..目录:


if(is_dir($fileName) && $fileName!= "." && $fileName!= "..") {

   $newName = $fileName.'asd';

   rename($fileName, $newName);

}

此外,正如mcserep所述, 中有语法错误,请注意右括号。$newName = $fileName.'asd');


查看完整回答
反对 回复 2021-08-27
?
森栏

TA贡献1810条经验 获得超5个赞

经过一些试验和错误,我设法找到了一个解决方案:


$dir = '../path/to/uploads/';


if (is_dir($dir)) {

    if ($dh = opendir($dir)) {

        while (($filename = readdir($dh)) !== false) {

                    if($filename!= "." && $filename!= "..") {

                        rename($dir.$filename, $dir.$filename."asd");

                    }

        }

        closedir($dh);

    }

}


查看完整回答
反对 回复 2021-08-27
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信