/*
* @此方法适合返回个数较少的,如果超过一定个数会有问题
* @$string 字符串源
* @最后要返回的字符串包含 字符个数
* @最后要返回的字符串包含 数字个数
*/
function getFixedLengthStr($string,$strNum=2,$digitNum=3){
$md5Str = md5($string); //md5加密字符串
$lenth = strlen($md5Str);
$totalNum = $strNum+$digitNum;//总个数
$digit = 0;//数字
$str = 0;//字符
$newStr = '';//最后返回的字符串
for($i=0;$i<=$lenth;$i++){
$newStrLenth = strlen($newStr);
if($newStrLenth == $totalNum){
break;
}
//md5加密的不是数字就是字符
if (ctype_digit($md5Str[$i])) {
if($digitNum>$digit){
$newStr.= $md5Str[$i];
}
$digit++;
} else {
if($strNum>$str){
$newStr.= $md5Str[$i];
}
$str++;
}
}
return $newStr;
}
$res = getFixedLengthStr(rand(1,100000));
echo "<pre>"; print_r($res);die();