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 に答える