1

我的问题是我使用的是下面显示的随机字符串创建器,我没有使用“alpha”,我使用的是“fourlet”。唯一的问题是这个在一个数组中

substr($pool, mt_rand(0, strlen($pool) -1), 1);

不能作为数据数组的随机创建者。有人可以帮忙吗?

下面是帮助程序的完整代码。

{
function random_string($type = 'alnum', $len = 8)
{
    switch($type)
    {
        case 'basic'    : return mt_rand();
            break;
        case 'alnum'    :
        case 'numeric'  :
        case 'nozero'   :
        case 'alpha'    :

                switch ($type)
                {
                    case 'alpha'    :   $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                        break;
                    case 'fourlet'  :   $pool = array('my', 'fun', 'zone', '12', '24', '37');
                        break;
                }

                $str = '';
                for ($i=0; $i < $len; $i++)
                {
                    $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
                }
                return $str;
            break;
        case 'unique'   :
        case 'md5'      :

                    return md5(uniqid(mt_rand()));
            break;
        case 'encrypt'  :
        case 'sha1' :

                    $CI =& get_instance();
                    $CI->load->helper('security');

                    return do_hash(uniqid(mt_rand(), TRUE), 'sha1');
            break;
    }
}

}

所以

4

1 回答 1

0

我做了一些改变。希望这会帮助你。

 <?php

// $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); // $rand_keys = array_rand($input, 2); // 回显 $input[$rand_keys[0]] . "\n"; // 回显 $input[$rand_keys[1]] . "\n";

function random_string($type = 'alnum', $len = 8) { switch($type) { case 'basic' : return mt_rand(); 休息; 案例“alnum”:案例“数字”:案例“nozero”:默认值:

    switch ($type)
    {
    case 'alpha'    :   $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        break;
    case 'fourlet'  :   $pool = array('my', 'fun', 'zone', '12', '24', '37');
        break;
    }

    $str = '';
        if(gettype($pool)=='string'){
            for ($i=0; $i < $len; $i++){
                $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
            }
        }   
        else if(gettype($pool)=='array'){       
            $rand_keys = array_rand($pool,4);
         $str=$pool[$rand_keys[0]].$pool[$rand_keys[1]].$pool[$rand_keys[2]].$pool[$rand_keys[3]];

        }       


    return $str;
    break;
case 'unique'   :
case 'md5'      :

    return md5(uniqid(mt_rand()));
    break;
case 'encrypt'  :
case 'sha1' :

    $CI =& get_instance();
    $CI->load->helper('security');

    return do_hash(uniqid(mt_rand(), TRUE), 'sha1');
    break;
}

}

var_dump(random_string('fourlet',8));

?>

于 2012-07-17T07:36:00.097 回答