繁体   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