如何生成长度应为16位、唯一、由1-9、a-z和A-Z组成的代码(明显区分大小写,因此Abc1与abc1不同)例如: Ahs78D7xkEshud45
我试过这样做,但似乎找不到最简单的方法。
谢谢你的帮忙!
发布于 2011-07-26 14:31:13
如果唯一性不是很重要,你可以尝试这样做:
function randomString() {
$length = 16;
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $str;
}要获得更独特的替代方法,请使用散列函数:
$str = substr(base64_encode(sha1(mt_rand())), 0, 16);发布于 2011-07-26 14:31:16
可以使用mt_rand() + md5 + base64的组合,并使用substr进行剪切
尝试以下代码:
<?php
$unique = substr(base64_encode(md5( mt_rand() )), 0, 15);
?>编辑:实际上不需要md5位,所以下面的代码会更容易更快:
<?php
$unique = substr(base64_encode(mt_rand()), 0, 15);
?>edit2:这会生成如下字符串:
NTA2YWUxODEzNDkw
发布于 2011-07-26 14:32:10
也许你可以试试这个:
$unique_id = substr(md5(uniqid(rand(), true)), 16, 16);https://stackoverflow.com/questions/6826106
复制相似问题