检查文件是否存在/追加数字到文件名

Avatar of Chris Coyier
Chris Coyier

如果文件名存在,则返回附加了_数字的新文件名,以避免覆盖。

function file_newname($path, $filename){
    if ($pos = strrpos($filename, '.')) {
           $name = substr($filename, 0, $pos);
           $ext = substr($filename, $pos);
    } else {
           $name = $filename;
    }

    $newpath = $path.'/'.$filename;
    $newname = $filename;
    $counter = 0;
    while (file_exists($newpath)) {
           $newname = $name .'_'. $counter . $ext;
           $newpath = $path.'/'.$newname;
           $counter++;
     }

    return $newname;
}

示例返回值

myfile.jpg
myfile_0.jpg
myfile_1.jpg