使用 PHP 重命名文件


Rename files using PHP

我希望能够使用PHP重命名文件。

以下脚本检查新名称是否存在。如果是这样(并且包含后缀),后缀将递增。

if(file_exists($fileName)) {
        $fileNewName= preg_replace_callback('/(?<=_)'d+(?='.)/',                   
         function ($m) { return ++$m[0]; },
         $fileName);
 }

但是,如果文件不包含后缀,则不会向文件添加任何后缀。

例:

filename_1.txt  becomes  filename_2.txt
however
filename.txt is not renamed.

你能帮我添加后缀 (_1) 不存在后缀吗?例:

filename.txt becomes filename_1.txt

也许是这样的(未经测试):

if(file_exists($fileName)) {
    $fileNewName = preg_replace_callback('/(?:(?<=_)'d+)?(?='.[^.]*$)/',                   
        function ($m) { return empty($m[0]) ? '_1' : ++$m[0]; },
         $fileName, 1);
}

简而言之,您将开头设置为可选(?:(?<=_)'d+)?并确保点是最后一个(?='.[^.]*$)。当$m[0]为空时,使用三元运算符返回"_1",否则返回递增的值。