程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php隨機生成字符串一些方法總結

php隨機生成字符串一些方法總結

編輯:關於PHP編程

前面有講過生成隨機密碼,下面我再來給大家介紹一些常用的生成隨機字符串的函數吧,這些都是我們自定義的函數,當然也有系統自帶函數了,不過都比較簡單了。

mt_rand函數

例子

在本例中,我們會返回一些隨機數:

 代碼如下 復制代碼

<?php
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
輸出類似:

3150906288
513289678
35

下面我們來看看mt_rand函數的實例吧。

 代碼如下 復制代碼

function roll () {
  return mt_rand(1,6);
  }

echo roll();

function roll ($sides) {
  return mt_rand(1,$sides);

}
  echo roll(6); // roll a six-sided die
  echo roll(10); // roll a ten-sided die
  echo roll(20); // roll a twenty-sided die

上面都只能生成簡單的純數字,不能是字母或數字與字母的,下面我們需用到自定義函數了

 代碼如下 復制代碼

<?php
function genRandomString($len) {
    $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"
    );

    $charsLen = count($chars) - 1;

    shuffle($chars); // 將數組打亂
   
    $output = "";
    for ($i=0; $i<$len; $i++) {
        $output .= $chars[mt_rand(0, $charsLen)];
    }
   
    return $output;
}

$str = genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
$str .= "<br />";
$str .= genRandomString(25);
$str .= "<br /><br />";

echo $str;
?>


程序輸出如下:


DmLVAmDkEJz8wHXRCNwzvANlB
BILZSA19YyuSVcR17KrrZsOKO
inlWlQF0GSabN3l589y9s16Gg

默認生成的隨機字符串長度為5,生成的字符串包含:數字+大寫字母

函數功能:

1、生成指定長度的隨機字符串

2、靈活選擇生成的隨機字符串的復雜度

 代碼如下 復制代碼

/**
  +----------------------------------------------------------
 * 生成隨機字符串
  +----------------------------------------------------------
 * @param int       $length  要生成的隨機字符串長度
 * @param string    $type    隨機碼類型:0,數字+大寫字母;1,數字;2,小寫字母;3,大寫字母;4,特殊字符;-1,數字+大小寫字母+特殊字符
  +----------------------------------------------------------
 * @return string
  +----------------------------------------------------------
 */
function randCode($length = 5, $type = 0) {
    $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");
    if ($type == 0) {
        array_pop($arr);
        $string = implode(",", $arr);
    } else if ($type == "-1") {
        $string = implode(",", $arr);
    } else {
        $string = $arr[$type];
    }
    $count = strlen($string) - 1;
    for ($i = 0; $i < $length; $i++) {
        $str[$i] = $string[rand(0, $count)];
        $code .= $str[$i];
    }
    return $code;
}

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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved