php生成8位唯一字符串

我将字符串进行md5生成32位字符串,要求根据这个字符串生成唯一的8位的字符串,同一个字符串多次运行结果需要相同,确保相对的唯一性,最好可以控制位数,比如我想七位,或者九位通过修改函数参数就行。$charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
基于这个62个字符生成

function get62($src, $length = 8){
$md5 = md5($src, true);

$pos = 0;
$res = "";
while(strlen($res) < $length && ($bin = substr($md5, $pos, 4)) != ""){
$uint =  sprintf("%u" , unpack("Nint", $bin)['int']);
$res .= decto62($uint);
$pos += 4;
}
return substr($res, 0, $length);
}

function decto62($src){
static $table = [];
$table = array_merge(range(0, 9), range('A', "Z"), range('a', "z"));

$arr62 = [];
$div = $src;
do{
$mod = $div % 62;
array_unshift($arr62, $table[$mod]);
$div = intval($div / 62);
}while($div != 0);

return implode("", $arr62);
}

var_dump(get62("abc"));

温馨提示:答案为网友推荐,仅供参考
相似回答