首頁 >後端開發 >php教程 >四種php隨機字產生符串的方法

四種php隨機字產生符串的方法

零到壹度
零到壹度原創
2018-04-11 17:57:322109瀏覽

這篇文章給大家分享的內容是四種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 .= $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&#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 =array_rand ($chars, $length); 
            $password = ”; 
           for($i = 0; $i < $length; $i++) 
          { 
             // 将 $length 个数组元素连接成字符串 
              $password .= $chars[$keys[$i]]; 
          } 
            return $password; 
         }

方法四

       基本想法md5加密與產生32位元的字串
        mt_rand 產生指定範圍的隨機數
        time 可獲得時間戳
        以隨機數##

 $rand = md5(time() . mt_rand(0,1000));



補充:PHP 變數後面加上一個大括號{},裡面填上數字,就是指PHP 變數對應序號的字元。

            例如:            $        echo $str{1}; / / 輸出為e    如果要檢查某個字串是否滿足多少長度,可以考慮用這種大括號(花括號)加isset 的方式替代    strlen 函數,因為isset 是語言結構,strlen 是函數,所以使用isset比使用strlen 效率更高。

    例如判斷字串的長度是否小於 5:

    if ( !isset ( $str{5} ) ) 比 if ( strlen ( $str ) < 5 ) 好。            
#

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

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