php隨機產生字串一些方法總結_PHP教程

來源:互聯網
上載者:User
前面有講過產生隨機密碼,下面我再來給大家介紹一些常用的產生隨機字串的函數吧,這些都是我們自訂的函數,當然也有系統內建函數了,不過都比較簡單了。

mt_rand函數

例子

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

代碼如下 複製代碼

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

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

代碼如下 複製代碼

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 .= "
";
$str .= genRandomString(25);
$str .= "
";
$str .= genRandomString(25);
$str .= "

";

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

http://www.bkjia.com/PHPjc/631493.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631493.htmlTechArticle前面有講過產生隨機密碼,下面我再來給大家介紹一些常用的產生隨機字串的函數吧,這些都是我們自訂的函數,當然也有系統內建函...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.