我想问你一件小事.
我在主文件夹中有一些其他文件夹.
这个子文件夹命名为:
我在主文件夹中有一些其他文件夹.
这个子文件夹命名为:
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++; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。