随机字符串是比较常用的功能,比如在密码生成、盐值生成、订单号生成、签名生成等地方都用到,常用的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