我必须生成一个固定长度为 10 个字符的随机字符串。但诀窍是它必须至少包含一个小写字母、一个大写字母、一个数字和以下符号之一:`~!@#$%^&*()_-+={}[]|:;" '<>,.?/
我之前使用过这个简单的功能:
function generateRandomString($length = 10)
{
$characters='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_-+={}[]|:;"\'<>,.?/';
$result = '';
for ($i = 0; $i < $length; $i++)
$result .= $characters[rand(0, strlen($characters) - 1)];
return $result;
}
但是此功能不包括所需的每种字符类型中的至少一种。即使我走另一条路:
function generateRandomString($length = 10)
{
$dig = '0123456789';
$low = 'abcdefghijklmnopqrstuvwxyz';
$upp = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$sym = '`~!@#$%^&*()_-+={}[]|:;"\'<>,.?/';
$result = '';
for ($i = 0; $i < $length; $i++)
{
$foo = rand(1,4);
switch ($foo)
{
case 1:
$result .= $dig[rand(0, strlen($dig)-1)];
break;
case 2:
$result .= $low[rand(0, strlen($low)-1)];
break;
// etc.
}
return $result;
}
这仍然不一定包含每个中的至少一个。所有字符必须随机放置。所以任何帮助将不胜感激。谢谢你。