2012-07-17 62 views
1

我的问题是,我使用下面示出的随机串的创建者,我不使用“阿尔法”,我使用“fourlet”。唯一的问题是,这是在一个阵列和字符串助手;阵列和SUBSTR

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; 
    } 
} 

}

所以

回答

0

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

<?php 

// $ input = array(“Neo”,“Morpheus”,“Trinity”,“Cypher”,“Tank”); // $ rand_keys = array_rand($ input,2); // echo $ input [$ rand_keys [0]]。 “\ n” 个; // echo $ input [$ rand_keys [1]]。 “\ n” 个;

功能random_string($类型= 'alnum',$ LEN = 8) { 开关($型) { 情况下 '基本':返回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));

?>

+0

嗯。可悲的是,这是在返回的“yoymoeym”的字符串,而不是实际的话:( – user1530901 2012-07-17 08:11:43

+0

所以,你要实际的话? – 2012-07-17 08:24:36

+0

是请!对不起,应该更清楚。每个数组值“我”,“好玩”等需要保持整个单词或数量需要保持为“12”或“24”,不能混用。因此,可能的结果,如“zone12my37”或“funmy3724”。:) – user1530901 2012-07-17 08:30:39