12文字の文字列をランダムで生成したいとき、どうしたらいいんだろうと
ふと思ったので、
PHP でランダム文字列を生成|てくめも@ecoop.net
こちらから拝借し、コードを作成しました。
<?php function getRandomString($s_length = 12){ $char_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $result = ""; for($i = 0; $i < $s_length; $i++) $result .= $char_list[mt_rand(0, strlen($char_list) - 1)]; return $result; } // 使う echo getRandomString() . "\n"; ?>
やっていることは、
- 関数の引数で何文字の文字列を生成するかを指定する
- char_list変数で、取り出すべき文字列のリストを作る
- s_lengthの値だけループをかける
- mt_rand関数で何番目の文字列を取り出すかを乱数で指定し、指定された文字列をresult変数に追加する
- s_lengthで指定した文字数の文字列が返ってくる
という感じである。
ちなみに、char_list[n]で、n番目の文字列を返すことが出来、
また'.='で、文字列をpushぽく追加することが出来る。
あと、PHP 4.2.0 以降、シード値の設定が自動的に行われるようになったため、
srand() または mt_srand() によりランダム数生成器に
シードを与える必要がなくなったそうです。
つまり、mt_srand関数は必要ないのか?