首頁  >  文章  >  後端開發  >  PHP開發技巧(四)-取得隨機字串兩種實作方法詳解

PHP開發技巧(四)-取得隨機字串兩種實作方法詳解

黄舟
黄舟原創
2017-03-10 18:42:111354瀏覽

    取得隨機字串的方法很多,只要自己的演算法設計的比較好,就可以很方便快速的得到自己想要的結果。取得隨機字串在我們的日常工作程式設計中也用到的很多,例如:登入時要輸入的驗證碼,發送手機簡訊驗證的驗證碼,以及在我們產生訂單的時候為了防止訂單號碼重複,我們會在固有的單號之後再加上一串隨機字串,增加其號碼不會重複的保障,等等。其實只要是對程式有了解的人都知道,沒有什麼真正的隨機,所有的都能找到其規律,只是難以與否的問題,這個就不多說了。

        我在這裡研究寫了兩個產生隨機字串的方法,各有其優缺點,主要是與大家共同學習進步,如果有好的意見建議,歡迎留言提出。下面的就不多說了,程式碼比較簡單,主要的是提供一個想法或是方法,大家可以直接讀程式碼

<?php  
  
/** 
 * ======================================= 
 * Created by Zhihua_W. 
 * Author: Zhihua_W 
 * Date: 2016/12/1 0004 
 * Time: 下午 5:15 
 * Project: PHP开发小技巧 
 * Power: 两种方法实现获取随机字符串 
 * ======================================= 
 */  
  
/** 
 * 方法一:获取随机字符串 
 * @param number $length 长度 
 * @param string $type 类型 
 * @param number $convert 转换大小写 
 * @return string 随机字符串 
 */  
function random($length = 6, $type = &#39;string&#39;, $convert = 0)  
{  
    $config = array(  
        &#39;number&#39; => &#39;1234567890&#39;,  
        &#39;letter&#39; => &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;,  
        &#39;string&#39; => &#39;abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789&#39;,  
        &#39;all&#39; => &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890&#39;  
    );  
  
    if (!isset($config[$type]))  
        $type = &#39;string&#39;;  
    $string = $config[$type];  
  
    $code = &#39;&#39;;  
    $strlen = strlen($string) - 1;  
    for ($i = 0; $i < $length; $i++) {  
        $code .= $string{mt_rand(0, $strlen)};  
    }  
    if (!empty($convert)) {  
        $code = ($convert > 0) ? strtoupper($code) : strtolower($code);  
    }  
    return $code;  
}  
  
/** 
 * 方法二:获取随机字符串 
 * @param int $randLength 长度 
 * @param int $addtime 是否加入当前时间戳 
 * @param int $includenumber 是否包含数字 
 * @return string 
 */  
function rand_str($randLength = 6, $addtime = 1, $includenumber = 0)  
{  
    if ($includenumber) {  
        $chars = &#39;abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789&#39;;  
    } else {  
        $chars = &#39;abcdefghijklmnopqrstuvwxyz&#39;;  
    }  
    $len = strlen($chars);  
    $randStr = &#39;&#39;;  
    for ($i = 0; $i < $randLength; $i++) {  
        $randStr .= $chars[rand(0, $len - 1)];  
    }  
    $tokenvalue = $randStr;  
    if ($addtime) {  
        $tokenvalue = $randStr . time();  
    }  
    return $tokenvalue;  
}  
  
//其中也可以放多个参数  
//random(4,&#39;number&#39;);  
//random(6,&#39;letter&#39;,1);  
echo random(10);  
//方法二同样  
echo rand_str(6);  
  
?>


#

以上是PHP開發技巧(四)-取得隨機字串兩種實作方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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