在PHP中生成字母数字最小值和最大值之间的随机值


Generate random between alphanumeric min and max in PHP

我正在寻找一种类似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
?>