如何根据目录数组增加唯一文件名

时间:2016-05-26 17:47:23

标签: php arrays

我正在创建一个上传表单,在上传文件时会检查目录中是否已存在同名文件。如果找到具有相同名称的文件,则脚本应通过附加文件名(例如test1.txt test2.txt等)来递增文件,直到找不到匹配项为止。这是我到目前为止所提出的,但我想看看是否应采取不同的方法。

另请注意,我的文件名在进入脚本的这一部分之前已经被清理,因此我的文件名和扩展功能都得到了简化。

function filename($file){
    return substr($file,0,strrpos($file,'.'));
}
function extension($file){
    return strtolower(substr(strrchr($file,'.'),1));
}
$new_file = 'test.txt';
$dir = 'files';
$files = scandir($dir);
$exclude = array('.','..');
foreach($files as $file){
    if(!in_array($file,$exclude)){
        $file_array[] = $file;
    }
}
$i = 1;
while(in_array($new_file,$file_array)){
    $filename = filename($new_file);
    $extension = extension($new_file);
    if($i>1){
        $num = strlen($filename);
        $filename = substr($filename,0,-1);
        $new_file = $filename.$i.'.'.$extension;
    } else {
        $new_file = $filename.$i.'.'.$extension;
    }
    echo $new_file.'<br>';
    echo $i.'<br>';
    $i++;
}
echo $new_file;

0 个答案:

没有答案