随机字符串是比较常用的功能,比如在密码生成、盐值生成、订单号生成、签名生成等地方都用到,常用的rand、mt_rand不太够用,下面这个函数是比较方便的函数,收集并使用了很久了:
/**
* 生成随机字符串
* @param $length integer 字符串长度
* @param false $numeric 是否纯数字
* @return string
*/
function get_random($length, $numeric = FALSE) {
$seed = base_convert(md5(microtime(true) . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
$seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
if ($numeric) {
$hash = '';
} else {
$hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);
$length--;
}
$max = strlen($seed) - 1;
for ($i = 0; $i < $length; $i++) {
$hash .= $seed{mt_rand(0, $max)};
}
return $hash;
}
echo 'number:'. get_random(16,true),'<BR>','str:'.get_random(16);上面的运行结果:
number:7882864704102528
str:hRZ4bWWBvKz6EBBO