這篇文章給大家分享的內容是四種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!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; $password = ”; for ( $i = 0; $i < $length; $i++ ) { // 这里提供两种字符获取方式 // 第一种是使用 substr 截取$chars中的任意一位字符; // 第二种是取字符数组 $chars 的任意元素 // $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); // $password .= $str{mt_rand(0,strlen($chars) - 1)}; //生成php随机数 $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', ‘b', ‘c', ‘d', ‘e', ‘f', ‘g', ‘h', i', ‘j', ‘k', ‘l','m', ‘n', ‘o', ‘p', ‘q', ‘r', 's', ‘t', ‘u', ‘v', ‘w', ‘x', ‘y','z', ‘A', ‘B', ‘C', ‘D', ‘E', ‘F', ‘G', ‘H', ‘I', ‘J', ‘K', ‘L','M', ‘N', ‘O', ‘P', ‘Q', ‘R', ‘S', ‘T', ‘U', ‘V', ‘W', ‘X', ‘Y','Z', ‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!', ‘@','#', ‘$', ‘%', ‘^', ‘&', ‘*', ‘(‘, ‘)', ‘-', ‘_', ‘[', ']‘, ‘{‘, ‘}', ‘<', ‘>', ‘~', ‘`', ‘+', ‘=', ‘,', ‘.', ‘;', ‘:', ‘/', ‘?', ‘|'); // 在 $chars 中随机取 $length 个数组元素键名 $keys =array_rand ($chars, $length); $password = ”; for($i = 0; $i < $length; $i++) { // 将 $length 个数组元素连接成字符串 $password .= $chars[$keys[$i]]; } return $password; }
基本想法md5加密與產生32位元的字串 if ( !isset ( $str{5} ) ) 比 if ( strlen ( $str ) < 5 ) 好。 以上是四種php隨機字產生符串的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!
mt_rand 產生指定範圍的隨機數
time 可獲得時間戳
以隨機數## $rand = md5(time() . mt_rand(0,1000));
補充:PHP 變數後面加上一個大括號{},裡面填上數字,就是指PHP 變數對應序號的字元。
例如: $ echo $str{1}; / / 輸出為e 如果要檢查某個字串是否滿足多少長度,可以考慮用這種大括號(花括號)加isset 的方式替代 strlen 函數,因為isset 是語言結構,strlen 是函數,所以使用isset比使用strlen 效率更高。
例如判斷字串的長度是否小於 5:
#