我正在寻找类似mt_rand
的方法来生成随机值,但是在两个字母数字值而不是整数之间。
例如,rand(g3j3j4k5, z9kDDkks8f8d)
。
我尝试按base_convert
将字母数字值转换为整数。除此之外,它有点矫枉过正,有时整数超过15位,因此无法在PHP rand函数中使用。
注意:这与制作给定长度的随机字符串无关。该值应该在两个给定值之间,与min和max整数之间的随机数完全相同。
答案 0 :(得分:1)
这应该适合你:
在此,我将$min
和$max
拆分为一个包含str_split()
的数组,并使用array_map()
遍历两个数组的每个字符。
在那里,我获得了strpos()
字符的位置,并在该特定范围内返回一个随机的字母字符。如果min大于max,我只返回整个范围内的随机字符。
代码:
<?php
function alphanum_rand($min = "", $max = ""){
$chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$random = array_map(function($minC, $maxC)use($chars){
if(($minKey = strpos($chars, $minC)) < ($maxKey = strpos($chars, $maxC)))
return $chars[mt_rand($minKey, $maxKey)];
else
return $chars[mt_rand(0, strlen($chars))];
}, str_split($min), str_split($max));
return implode("", $random);
}
echo alphanum_rand("g3j3j4k5", "z9kDDkks8f8d");
?>
答案 1 :(得分:-1)
您可以尝试使用简单的PHP函数并定义随机字符串字母数字,也可以包含特殊字符。 For循环将为你做魔术:)
function RandomString($size)
{
$chars = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
$string = array();
$alphaLength = strlen($chars) - 1;
for ($i = 0; $i < $size; $i++) {
$n = rand(0, $alphaLength);
$string[] = $chars[$n];
}
return implode($string);
}
然后用您需要的大小简单地调用它。
<?php
echo RandomString(5); // Length of strings
?>