1. ホーム
  2. php

[解決済み] PHPランダム文字列ジェネレータ

2022-03-22 14:18:52

質問

PHPでランダムな文字列を作成しようとしているのですが、これでは全く出力されません。

<?php
    function RandomString()
    {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randstring = '';
        for ($i = 0; $i < 10; $i++) {
            $randstring = $characters[rand(0, strlen($characters))];
        }
        return $randstring;
    }

    RandomString();
    echo $randstring;

何が間違っているのでしょうか?

どうすればいいですか?

この質問に具体的に答えるには、2つの問題があります。

  1. $randstring は、echoした時点でスコープに入っていません。
  2. ループの中で文字が連結されていない。

以下は、修正を加えたコードスニペットです。

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

以下のコールでランダムな文字列を出力します。

// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();

これは予測可能なランダム文字列を生成することに注意してください。安全なトークンを作成したい場合。 この回答を見る .