0

我正在尝试编写一个返回给定长度的随机字符串的 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个(显然我每次都以与输入相同的长度调用它)。我搜索了随机字符串生成器的其他示例,但它们都使用基本字符串来选择字母。我想知道为什么这种方法不能正常工作。

谢谢!

4

3 回答 3

3

有根据的猜测:您尝试将纯文本字符串显示为 HTML。浏览器在被告知它是 HTML 之后,就这样处理它。<生成字符后,以下字符会立即呈现为(未知)HTML 标记,并且不会按照 HTML 标准要求显示。

使固定:

echo htmlspecialchars(generate_string(150));
于 2012-04-19T14:50:55.823 回答
0

这是我测试一段时间后得出的结论:您的功能正常工作。这取决于您如何处理随机生成的字符串。如果您只是简单地回显它,那么它可能会生成<ck1ask类似标签的东西。尝试消除连接到字符串的某些字符。

于 2012-04-19T14:51:37.193 回答
0

此函数将用于在 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中生成随机字符串

于 2019-01-20T15:09:39.880 回答