+
95
-

回答

两种方案

1、到前时间戳结合微秒及随机数值来生成唯一id;

2、使用php内置函数uniqid;

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。

uniqid(prefix,more_entropy)

prefix 可选。规定唯一 ID 的前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。

more_entropy 可选。规定位于返回值末尾的更多的熵。这将让结果更具唯一性。当设置为 TRUE,返回字符串为 23 个字符。默认是 FALSE,返回字符串为 13 个字符。

<?php
function getUniqId($prefix = 'BFW') {
return $prefix . (strtotime(date('YmdHis', time()))) . substr(microtime(), 2, 6) . sprintf('%03d', rand(0, 999999));
}


function getToken() {
//strtoupper转换成全大写的
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
return substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4) . substr($charid, 20, 12);
}


网友回复

我知道答案,我要回答