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

2022-07-22 19:36:13 字數 1850 閱讀 3159

使用php開發應用程式,尤其是**程式,常常需要生成隨機密碼,如使用者註冊生成隨機密碼,使用者重置密碼也需要生成乙個隨機的密碼。隨機密碼也就是一串固定長度的字串,文章整理了幾種生成隨機字串的方法。

51cto推薦專題: 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

=   

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

) <

>

~`+=,.;:/?|』;  

$password

= 」;  

for ( $i= 

0; $i 

<

$length; $i++ )  

return $password;  

}方法三

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

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

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

function make_password( $

length= 8

)  』, 『

<

』, 『

>

』, 『~』, 『`』, 『+』, 『=』, 『,』,  

『.』, 『;』, 『:』, 『/』, 『?』, 『|』);  

// 在 $chars 中隨機取 $length 個陣列元素鍵名  

$keys

= ($chars, $length);  

$password

= 」;  

for($i= 

0; $i 

<

$length; $i++)  

return $password;  

}時間效率對比

我們使用以下php**,計算上面的 3 個隨機密碼生成函式生成 6 位密碼的執行時間,進而對他們的時間效率進行乙個簡單的對比。最終得出的結果是:

方法一:9.8943710327148e-5 秒  

方法二:9.6797943115234e-5 秒  

方法三:0.00017499923706055 秒 

可以看出方法一和方法二的執行時間都差不多,而方法三的執行時間稍微長了點。

**

php反轉字串的三種方法

假設有字串abcd,用php實現字串翻轉 1.第一種php有自帶的函式strrev可以輕鬆實現 str abcd 第一種自帶strrev實現翻轉 echo strrev str 輸出效果 2.就是把分割字串到乙個陣列中,然後遍歷拼接 function joinstrrev str return ne...

搜尋字串的三種方法

cpp file fp tfopen szxmlfilepath,l rb if fp null return fseek fp,0,seek end uint nlen ftell fp fseek fp,0,seek set 寬字元型別 wchar t pstr read new wchar t...

左旋字串的三種方法

注 有效次數為 總次數 n 如上圖所示,假設對字串左旋6次和左旋2次,得到的結果是一樣的 思路 include include include include pragma warning disable 4996 遮蔽scanf出現的錯誤 char a abcd1234 變數定義成全域性較好 in...