固定長 10 文字のランダムな文字列を生成する必要があります。ただし、少なくとも 1 つの小文字、1 つの大文字、数字、およびこれらの記号の 1 つが含まれている必要があります: `~!@#$%^&*()_-+={}[]|:;" '<>,.?/
以前にこの単純な関数を使用しました:
function generateRandomString($length = 10)
{
$characters='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_-+={}[]|:;"\'<>,.?/';
$result = '';
for ($i = 0; $i < $length; $i++)
$result .= $characters[rand(0, strlen($characters) - 1)];
return $result;
}
ただし、この関数には、必要な各文字タイプが少なくとも 1 つ含まれていません。別のルートに行っても:
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;
}
これには、必ずしもそれぞれの少なくとも 1 つが含まれているとは限りません。すべての文字をランダムに配置する必要があります。そのため、どんな助けでも大歓迎です。ありがとうございました。