PHP:如何重命名文件夹

楚斯特

我想问你一件小事。
我在主文件夹中还有另外几个文件夹。该子文件夹的名称为:

v1,v2,v3,v4 ...

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

例如v2->所以我有v1,v3,v4

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

v1,v2,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,v2,v3,....。
排除的目录:v_1,v2_1,v3a,t1,..,..,xyz

最终目录:v0,v1,v2,v3,.....

如果最终目录需要从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++;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章