簡體   English   中英

隨機字符串生成器(PHP)

[英]Random String Generator (PHP)

我正在嘗試編寫一個PHP函數,該函數返回給定長度的隨機字符串。 我這樣寫:

<?
function generate_string($lenght) {
    $ret = "";
    for ($i = 0; $i < $lenght; $i++) {
        $ret .= chr(mt_rand(32,126));
    }
    return $ret;
}

echo generate_string(150);
?>

上面的函數生成一個隨機字符串,但是字符串的長度不是恆定的,即:一次是30個字符,另一次是60(顯然,我每次都用與輸入相同的長度來稱呼它)。 我搜索了隨機字符串生成器的其他示例,但是它們都使用基本字符串來選擇字母。 我想知道為什么這種方法不能正常工作。

謝謝!

有根據的猜測:您嘗試將純文本字符串顯示為HTML。 在告知瀏覽器為HTML之后,瀏覽器將按原樣進行處理。 生成<字符后,以下字符將作為(未知)HTML標記呈現,並且不會按HTML標准要求顯示。

固定:

echo htmlspecialchars(generate_string(150));

這是經過一段時間測試后得出的結論:您的功能正常運行。 這取決於您對隨機生成的字符串的處理方式。 如果只是回顯,則可能會生成諸如<ck1ask類的<ck1ask ,將其視為標簽。 嘗試消除某些字符被串聯到字符串中。

此函數將在PHP中生成隨機字符串

function getRandomString($maxlength=12, $isSpecialChar=false)
{
    $randomString=null;
   //initalise the string include lower case, upper case and numbers
   $charSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

   //if required special character to include, please set $isSpecialchar= 1 or true
  if ($isSpecialChar) $charSet .= "~@#$%^*()_±={}|][";

  //loop for get specify length character with random characters
  for ($i=0; $i<$maxlength; $i++) $randomString .= $charSet[(mt_rand(0,   (strlen($charSet)-1)))];

   //return the random string
   return $randomString;
}
//call the function set value you required to string length default:12
$random8char=getRandomString(8);
echo $random8char;

來源: 在php中生成隨機字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM