如果文件存在,则获取唯一的文件名添加数字并重试直到获得唯一

时间:2017-09-02 14:25:16

标签: php directory

使用PHP如何通过在路径末尾添加额外的数字来捕获唯一的文件名(不添加像uniqid(),crypted,rand等随机字符,但是使用代码程序,尝试捕获唯一的文件名BY ADDING +1号。

MAYBE

in my './image_folder/' dir have this path.
-my-path.jpg
-my-path-1.jpg
-my-path-2.jpg
-my-other-path-name.jpg 
// try to get my-path-3.jpg
-my-path.jpeg
-my-path-1.jpeg
$filename = 'my-path.jpg';
if(filename_exists('./image_folder/' . $filename  ){
/*this file name already exists in this dir. how to get my-path-3.jpg (3 is according to adding +1 number untill get unique file name */
} else {
#this file name not exists, there's no problerm here
}

1 个答案:

答案 0 :(得分:0)

为什么不使用循环和测试,如果文件存在?

$filename = 'my-path.jpg';
$folder = './image_folder/';
$unique = $folder . $filename;
if (file_exists($unique)) {
    preg_match('~(.*)\.([^\.]+)~', $filename, $m);
    $i = 1;
    while (file_exists($unique = $folder . $m[1] . '-' . $i . '.' . $m[2])) {
        $i++;
    }
}
// now $unique contains an non existing filename