在PHP中用字母数字min和max之间生成随机数

时间:2015-12-12 15:56:04

标签: php random

我正在寻找类似mt_rand的方法来生成随机值,但是在两个字母数字值而不是整数之间。

例如,rand(g3j3j4k5, z9kDDkks8f8d)

我尝试按base_convert将字母数字值转换为整数。除此之外,它有点矫枉过正,有时整数超过15位,因此无法在PHP rand函数中使用。

注意:这与制作给定长度的随机字符串无关。该值应该在两个给定值之间,与min和max整数之间的随机数完全相同。

2 个答案:

答案 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
?>