我正在寻找一种类似mt_rand
的方法来生成随机值,但要在两个字母数字值之间而不是整数之间。
例如,rand(g3j3j4k5, z9kDDkks8f8d)
。
我尝试通过base_convert
将字母数字值转换为整数。除此之外,它在某种程度上有些过头了,有时整数超过15位,因此在PHP rand函数中不起作用。
注意:这不是制作一个给定长度的随机字符串。该值应该在两个给定值之间,就像最小和最大整数之间的随机数一样。
这应该适用于您:
这里,我将$min
和$max
拆分为一个具有str_split()
的数组,并使用array_map()
循环遍历这两个数组的每个字符。
在那里,我用strpos()
得到字符的位置,并返回该特定范围内的随机字母数字字符。如果最小值大于最大值,我只返回整个范围内的一个随机字符。
代码:
<?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");
?>
您可以尝试一个简单的PHP函数,定义一个随机字符串字母数字,还可以包括特殊字符。For循环将为u带来魔力:)
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
?>