標籤:rto env 隨機 sub 產生隨機數 merge 轉換 rand time
方法一: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 string38 */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擷取隨機字串的幾種方法