PHP | ランダムな文字列を生成する方法

PHP,PHP 文字列

PHPでパスワードの生成やID生成に使えるランダムな文字列を作成する方法を紹介しています。

ランダムな文字列を生成する

PHPでランダムな文字列を作成する方法はいくつもありますが、簡単なものでsubstr()str_shuffle()を利用する方法があります。

str_shuffle()は文字列をランダムに並び替えます。

ランダムに並び替えた文字列をsubstr()で先頭から指定した文字数で切り取ります。

substr(str_shuffle(利用する文字, 0, 生成する文字数);

英字のみ、重複なし

英字のみのランダムな文字列は以下のPHPコードで作成する事ができます。

この場合、同じ文字は1度しか抽出されず重複ことはありません。

$str = 'abcdefghijklmnopqrstuvwxyz';
$rand_str = substr(str_shuffle($str), 0, 8);

英字のみ、重複あり

同じ文字の抽出を複数回出現させて重複ありにするにはstr_repeat()で文字列を反復させて指定しておく方法が簡単です。

str_repeat()の第二引数には文字列を反復する回数を指定します。

$str = 'abcdefghijklmnopqrstuvwxyz';
$rand_str = substr(str_shuffle(str_repeat($str, 10)), 0, 8);

英数字、重複なし

英字に加えて数字も含める場合は利用する文字に数字を追加するだけで実装できます。

$str = 'abcdefghijklmnopqrstuvwxyz0123456789';
$rand_str = substr(str_shuffle($str), 0, 8);

英数字、重複あり

重複ありにする場合も同様にstr_repeat()で文字列を反復しています。

$str = 'abcdefghijklmnopqrstuvwxyz0123456789';
$rand_str = substr(str_shuffle(str_repeat($str, 10)), 0, 8);

PHP,PHP 文字列

Posted by Yousuke.U