我尝试编写生成唯一文件名的PHP代码。
首先,它会检查第一个给定的名称文件'矢量背景' 是否退出文件夹。如果是,它将在最后添加1,因此文件名将'矢量背景1' 所以它会再次检查是否比我最后一个所以新名称'矢量背景11' 它会做什么,而它会得到唯一的名称。
我尝试自己
$folder='C:\Users\Desktop\file exits\\';
$name='log';
$result=file_exists($folder.$name);
if ($result == "1") { //// file exits so work start
///// generate name file that not exists in folder
$name=$name.' 1';
$result=file_exists($folder.$name);
if ($result == "1") {
$name=$name.' 1';
$result=file_exists($folder.$name);
}
}
这是我的进步,它不是智能代码
答案 0 :(得分:2)
首先,您可以重写代码,以便“命名”算法存在于循环中。
$fname = $folder . $name;
while (file_exists($fname)) {
$fname = $fname . '1';
}
但是,此代码效率不高,可能会使您遇到问题。例如,文件路径可能超过操作系统允许的最大字符数。
如果你想要实现的只是一个防止文件名冲突的唯一文件名,那么PHP就有一个名为tempnam
的内置函数。它在指定目录中创建一个具有唯一文件名的文件,其访问权限设置为0600。
string tempnam (string $ dir,string $ prefix)
所以你的代码可以像这样重写:
$fname = tempname($folder, $name);