Jam*_*son 5 php random filenames
我想为上传的文件生成唯一的文件名.它们的长度应为5个字符,并且仅包含以下字符:abcdefghijklmnopqrstuvwxyz0123456789.这是我的代码:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
$filename += $chars[mt_rand(0, 36)];
}
echo $filename;
Run Code Online (Sandbox Code Playgroud)
但我总是以1或2个字符长整数结束,从不使用任何字符串字符.如果我运行此代码:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
$length = 5;
$filename = '';
for($i = 0; $i < $length; $i++)
{
echo $chars[mt_rand(0, 36)];
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我得到以下输出:8iwzf.
我在这里做错了什么?谢谢!
fre*_*ed2 14
5个字符不会给你很多"唯一性"(熵),因此你冒着重复文件名的风险.
为什么不用
$filename = uniqid();
Run Code Online (Sandbox Code Playgroud)
您可以通过添加前缀和其他内容来添加熵,以使重复的可能性(在现实世界中)为零.
小智 9
您正在添加(+ =).您想使用点连接字符串.
$filename .= $chars[mt_rand(0, 36)];
| 归档时间: |
|
| 查看次数: |
10500 次 |
| 最近记录: |