我正在尝试编写一个返回给定长度的随机字符串的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
的东西,它将被视为标签。尝试从连接到字符串中删除某些字符。
这个函数可以在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 中生成随机字符串