加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP:如何重命名文件夹

发布时间:2020-12-13 17:00:27 所属栏目:PHP教程 来源:网络整理
导读:我想问你一件小事. 我在主文件夹中有一些其他文件夹. 这个子文件夹命名为: v1,v2,v3,v4… 我想知道,当我删除其中一个文件夹时, e.g. v2 - so I have v1,v4 如何将所有这些文件夹重命名为 v1,v3. 我试过这段代码,但它不起作用: $path='directory/';$handle=
我想问你一件小事.
我在主文件夹中有一些其他文件夹.
这个子文件夹命名为:

v1,v2,v3,v4…

我想知道,当我删除其中一个文件夹时,

e.g. v2 -> so I have v1,v4

如何将所有这些文件夹重命名为

v1,v3.

我试过这段代码,但它不起作用:

$path='directory/';
$handle=opendir($path);
$i = 1;
while (($file = readdir($handle))!==false){
    if ($file!="." && $file!=".."){
        rename($path . $file,$path . 'v'.$i);
        $i++;
    }

谢谢!

解决方法

此代码检索名称以“v”开头的所有目录,后跟数字.

目录已过滤:v1,…..
排除目录:v_1,v2_1,v3a,t1,.,..,xyz

最终目录:v0,v1,…..

如果最终目录需要从v1开始,那么我将再次获取目录列表并再执行一次重命名过程.我希望这有帮助!

$path='main_folder/'; $handle=opendir($path); $i = 1; $j = 0; $foldersStartingWithV = array();  

// Folder names starts with v followed by numbers only
// We exclude folders like v5_2,t2,v6a,etc
$pattern = "/^v(d+?)?$/";

while (($file = readdir($handle))!==false){
    preg_match($pattern,$file,$matches,PREG_OFFSET_CAPTURE);

    if(count($matches)) {
    // store filtered file names into an array
    array_push($foldersStartingWithV,$file);
    }
}

// Natural order sort the existing folder names 
natsort($foldersStartingWithV);  

// Loop the existing folder names and rename them to new serialized order
foreach($foldersStartingWithV as $key=>$val) {
// When old folder names equals new folder name,then skip renaming
    if($val != "v".$j) {
        rename($path.$val,$path."v".$j);
    }
    $j++;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读