我有以下代码,我从不同的教程示例中汇总了这些代码:
<?php
$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = crypt(uniqid(rand(),1));
$rndid = strip_tags(stripslashes($rndid));
$rndid = str_replace(".","",$rndid);
$rndid = strrev(str_replace("/","",$rndid));
$rndid = substr($rndid,0,$random_id_length);
$orderid = "$stamp-$rndid";
$orderid = str_replace(".", "", "$orderid");
echo($orderid);
?>
FIDDLE:http://phpfiddle.org/main/code/27d-qfw
我想创建一个数字;当前时间,后跟一个6位数的随机数。
例如:20130710045730-954762
然而,目前随机数字也包括字母。
例如:20130710045730-Z3sVN2
如何编辑代码才能包含数字?任何帮助表示赞赏。
答案 0 :(得分:21)
uniqid()
已经返回了数字。但在他们的十六进制表示。通常,您可以将它们转换为小数:
echo hexdec(uniqid());
该值只能在64位系统上观察到,因为它非常大并且超出了32位有符号整数的限制(如php的一个)。这就是重点。 uniqid()
使用如此大的数字和其他技术来确保高等级的单一性。 如果您只使用6位数字,则无法再授权。值会发生冲突的风险会很高。
我建议使用数据库中的auto_increment值或类似的东西生成应用程序范围的uniqness。
答案 1 :(得分:4)
如果是随机字符串,请使用以下内容:
$stamp = date("Ymdhis");
$random_id_length = 6;
$rndid = generateRandomString( $random_id_length );
$orderid = $stamp ."-". $rndid;
echo($orderid);
function generateRandomString($length = 10) {
$characters = '0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
// Output example: 20130710055714-462231
修改
答案 2 :(得分:0)
使用此代码。我认为这会有所帮助。
兰特(100000,999999)
输入您想要的两个数字
答案 3 :(得分:-1)
使用此:
str_pad(rand(0,'9'.round(microtime(true))),11, "0", STR_PAD_LEFT);