首頁  >  文章  >  後端開發  >  PHP產生隨機字串的三種方法

PHP產生隨機字串的三種方法

墨辰丷
墨辰丷原創
2018-06-07 11:17:359516瀏覽

這篇文章主要介紹PHP產生隨機字串的三種方法,有興趣的朋友參考下,希望對大家有幫助。

方法一

1、在33 – 126中產生一個隨機整數,如35。

2、將35轉換成對應的ASCII碼字符,如35對應#。

3、重複以上1、2步驟n次,連接成n位的密碼。

該演算法主要用到了兩個函數,mt_rand ( int $min , int $max )函數用於產生隨機整數,其中$min – $max 為ASCII 碼的範圍,這裡取33 -126 ,可依需求調整範圍,如ASCII碼表中97 – 122 位元對應a – z 的英文字母,具體可參考ASCII碼表; chr ( int $ascii )函數用於將對應整數$ascii 轉換成對應的字元。

function create_password($pw_length =  
{ 
$randpwd = ”; 
for ($i = 0; $i < $pw_length; $i++) 
{ 
$randpwd .= chr(mt_rand(33, 126)); 
} 
return $randpwd; 
} 
// 调用该函数,传递长度参数$pw_length = 6 
echo create_password(6);

方法二

1、預設一個的字串 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字元。

2、在 $chars 字串中隨機取一個字元。

3、重複第二步n次,可得長度為n的密碼。

function generate_password( $length = 8 ) { 
// 密码字符集,可任意添加你需要的字符 
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|&#39;; 
$password = ”; 
for ( $i = 0; $i < $length; $i++ ) 
{ 
// 这里提供两种字符获取方式 
// 第一种是使用 substr 截取$chars中的任意一位字符; 
// 第二种是取字符数组 $chars 的任意元素 
// $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); 
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
} 
return $password; 
}

方法三

1、預設一個的字元陣列 $chars ,包括 a – z,A – Z,0 – 9,以及一些特殊字元。

2、透過array_rand()從陣列$chars中隨機選出$length個元素。

3、根據已取得的鍵名陣列 $keys,從陣列$chars取出字元拼接字串。此方法的缺點是相同的字元不會重複取。

function make_password( $length = 8 ) 
{ 
 
// 密码字符集,可任意添加你需要的字符 
$chars = array(‘a&#39;, ‘b&#39;, ‘c&#39;, ‘d&#39;, ‘e&#39;, ‘f&#39;, ‘g&#39;, ‘h&#39;, 
‘i&#39;, ‘j&#39;, ‘k&#39;, ‘l&#39;,&#39;m&#39;, ‘n&#39;, ‘o&#39;, ‘p&#39;, ‘q&#39;, ‘r&#39;, &#39;s&#39;, 
‘t&#39;, ‘u&#39;, ‘v&#39;, ‘w&#39;, ‘x&#39;, ‘y&#39;,&#39;z&#39;, ‘A&#39;, ‘B&#39;, ‘C&#39;, ‘D&#39;, 
‘E&#39;, ‘F&#39;, ‘G&#39;, ‘H&#39;, ‘I&#39;, ‘J&#39;, ‘K&#39;, ‘L&#39;,&#39;M&#39;, ‘N&#39;, ‘O&#39;, 
‘P&#39;, ‘Q&#39;, ‘R&#39;, ‘S&#39;, ‘T&#39;, ‘U&#39;, ‘V&#39;, ‘W&#39;, ‘X&#39;, ‘Y&#39;,&#39;Z&#39;, 
‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!&#39;, 
‘@&#39;,&#39;#&#39;, ‘$&#39;, ‘%&#39;, ‘^&#39;, ‘&&#39;, ‘*&#39;, ‘(‘, ‘)&#39;, ‘-&#39;, ‘_&#39;, 
‘[&#39;, &#39;]‘, ‘{‘, ‘}&#39;, ‘<&#39;, ‘>&#39;, ‘~&#39;, ‘`&#39;, ‘+&#39;, ‘=&#39;, ‘,&#39;, 
‘.&#39;, ‘;&#39;, ‘:&#39;, ‘/&#39;, ‘?&#39;, ‘|&#39;); 
 
// 在 $chars 中随机取 $length 个数组元素键名 
$keys = ($chars, $length); 
$password = ”; 
for($i = 0; $i < $length; $i++) 
{ 
// 将 $length 个数组元素连接成字符串 
$password .= $chars[$keys[$i]]; 
} 
return $password; 
}

時間效率比較

我們使用以下PHP程式碼,計算上面的3 個隨機密碼產生函數產生6 位元密碼的運行時間,進而對他們的時間效率進行一個簡單的對比。最後得出的結果是:

方法一:9.8943710327148E-5 秒 
方法二:9.6797943115234E-5 秒 
方法三:0.000174999237065 秒 
方法三:0.000174999237065 秒一和方法二的執行時間都差不多,而方法三的運行時間稍微長了點。

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

相關推薦:

PHP實作登入驗證碼功能

免費的訊息通知功能,用PHP中Telegram的介面怎麼寫?

PHP開發微信退款案例

#

以上是PHP產生隨機字串的三種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn