1. 程式人生 > >php獲取隨機字符串的幾種方法

php獲取隨機字符串的幾種方法

env 字符串 int 特殊符號 時間戳 turn shu 特殊 per

方法一:shuffle函數(打亂數組)和mt_rand函數(生成隨機數,比rand速度快四倍)

 1 /**
 2  * 獲得隨機字符串
 3  * @param $len             需要的長度
 4  * @param $special        是否需要特殊符號
 5  * @return string       返回隨機字符串
 6  */
 7 function getRandomStr($len, $special=true){
 8     $chars = array(
 9         "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
10
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", 11 "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 12 "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", 13 "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", 14 "3", "4", "5", "6", "7", "8", "9" 15
); 16 17 if($special){ 18 $chars = array_merge($chars, array( 19 "!", "@", "#", "$", "?", "|", "{", "/", ":", ";", 20 "%", "^", "&", "*", "(", ")", "-", "_", "[", "]", 21 "}", "<", ">", "~", "+", "=", ",", "." 22 )); 23 } 24 25
$charsLen = count($chars) - 1; 26 shuffle($chars); //打亂數組順序 27 $str = ‘‘; 28 for($i=0; $i<$len; $i++){ 29 $str .= $chars[mt_rand(0, $charsLen)]; //隨機取出一位 30 } 31 return $str; 32 }

方法二、str_shuffle函數(打亂字符串順序)和mt_rand函數

1 //取隨機10位字符串
2 $strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
3 $name=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),10);
4 echo $name;

方法三、md5(),uniqid(),microtime()生成唯一的32位字符串

$uniqid = md5(uniqid(microtime(true),true));
//microtime(true)  返回系統當前時間戳的毫秒數

其他方法:

 1 /**
 2      * 方法一:獲取隨機字符串
 3      * @param number $length 長度
 4      * @param string $type 類型
 5      * @param number $convert 轉換大小寫
 6      * @return string 隨機字符串
 7      */
 8     function random($length = 6, $type = ‘string‘, $convert = 0)
 9     {
10         $config = array(
11             ‘number‘ => ‘1234567890‘,
12             ‘letter‘ => ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘,
13             ‘string‘ => ‘abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789‘,
14             ‘all‘ => ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890‘
15         );
16  
17         if (!isset($config[$type]))
18             $type = ‘string‘;
19         $string = $config[$type];
20  
21         $code = ‘‘;
22         $strlen = strlen($string) - 1;
23         for ($i = 0; $i < $length; $i++) {
24             $code .= $string{mt_rand(0, $strlen)};
25         }
26         if (!empty($convert)) {
27             $code = ($convert > 0) ? strtoupper($code) : strtolower($code);
28         }
29         return $code;
30     }
31  
32     /**
33      * 方法二:獲取隨機字符串
34      * @param int $randLength 長度
35      * @param int $addtime 是否加入當前時間戳
36      * @param int $includenumber 是否包含數字
37      * @return string
38      */
39     function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)
40     {
41         if ($includenumber) {
42             $chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789‘;
43         } else {
44             $chars = ‘abcdefghijklmnopqrstuvwxyz‘;
45         }
46         $len = strlen($chars);
47         $randStr = ‘‘;
48         for ($i = 0; $i < $randLength; $i++) {
49             $randStr .= $chars[mt_rand(0, $len - 1)];
50         }
51         $tokenvalue = $randStr;
52         if ($addtime) {
53             $tokenvalue = $randStr . time();
54         }
55         return $tokenvalue;
56     }

php獲取隨機字符串的幾種方法