php擷取隨機字串的幾種方法

來源:互聯網
上載者:User

標籤: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擷取隨機字串的幾種方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.