php獲取隨機字符串的幾種方法
阿新 • • 發佈:2018-08-25
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獲取隨機字符串的幾種方法