php生成随机字符串,可自定义长度,数字或者组合的函数

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

评论/留言