[英]Generate a random string PHP
為了生成隨機字符串,我編寫了這樣的代碼,但是,如果使用負值(或零或100萬)調用函數,則會產生很多問題。 所以請給我建議更好的代碼。
/*
* The following function is for generating a random string value.
* @param unknown_type $length
* @return string $randString
*/
function generateRandomString( $length ) {
$randString = "";
srand();
$characters = "abcdefghijklmnopqrstuvwxyz1234567890";
/*
* build string of random characters
*/
while( strlen( $randString ) < $length ) {
$randString .= substr( $characters, rand() % (strlen( $characters )),1 );
}
return $randString;
}
要阻止作為參數傳遞的負數或零成為問題,可以使用max(1, $length)
。 或者,檢查< 1
並引發異常或返回FALSE
。
所以請給我建議更好的代碼。
這是您的代碼的一些建議...
function generateRandomString( $length ) {
$chars = array_merge(range('a', 'z'), range(0, 9));
shuffle($chars);
return implode(array_slice($chars, 0, $length));
}
鍵盤 。
請注意,在結果字符串中,此字符永遠不會兩次出現。
如果您確實希望這樣做,可以使用...
function generateRandomString( $length ) {
$chars = array_merge(range('a', 'z'), range(0, 9));
return array_reduce(array_rand($chars, $length), function($str, $key) use ($chars) {
return $str.= $chars[$key];
}, '');
}
鍵盤 。
或略有不同
function generateRandomString( $length ) {
$chars = array_merge(range('a', 'z'), range(0, 9));
return implode(array_map(function($key) use ($chars) {
return $chars[$key];
}, array_rand($chars, $length)));
}
鍵盤 。
如果您唯一關心的是設置長度限制,則可以設置自己的長度,如果最小為5,而$ length <5,則將其設置為5,如果最大為30,則可以將其設置為30, > 30 ...看到了嗎?
這個是來做什么的? 生成始終為32個字符的數字隨機字符串的一種更好的方法是從當前時間戳中獲取md5。 當然,這不能保證是唯一的,如果兩個用戶同時調用代碼,但是在沒有其他信息的情況下,我會考慮采用這種方法。
您可以檢查長度的正確值。 如果指定的長度不是練習長度,則應將其重置。
function generateRandomString($length)
{
if($length < 1 || $length > 50)
{
$length = 25;
}
// do the rest here...
}
/*
* The following function is for generating a random string value.
* @param unknown_type $length
* @return string $randString
*/
function generateRandomString( $length ) {
$valueCheck = 99999999;
$length = ($length<0)?-$length:$length;
$length = ($length==0)?rand(0,$valueCheck):$length;
$length = ($length>$valueCheck)?rand(0,$valueCheck):$length;
$randString = "";
srand();
$characters = "abcdefghijklmnopqrstuvwxyz1234567890";
/*
* build string of random characters
*/
while( strlen( $randString ) < $length ) {
$randString .= substr( $characters, rand() % (strlen( $characters )),1 );
}
return $randString;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.