- ベストアンサー
数字と半角英字混じりの乱数を作りたい
半角数字と半角英字混じりで6文字の乱数を作りたいのですがどのようにしたら良いですか?こんなこと出来るのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以前同じようなプログラムを作ったことがあります。 今回のご質問の条件に合せると、以下のようなプログラムになると思います。 $chrs = "abcdefghijklmnopqrstuvwxyz0123456789"; $ch = ""; for ($i=0; $i<6; $i++) $ch .= $chrs[mt_rand(0, strlen($chrs)-1)]; echo $ch;
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
若干仕様定義があいまいですね。 >半角数字と半角英字混じりで6文字の乱数 英字というのうは大文字小文字をどうしたいのかによります。 両方つかうと多少複雑になります。 「混じり」というのは必ず混じっていないといけないのか、 それとも混じっていてもいなくてもいいのかによってことなります。 #2さんの例で、とりあえず数字と半角英字がまじってなくても いい場合はおさえられると思いますので、せっかくなので 数字、大文字、小文字がかならず1文字以上はいってなくては いけない場合の例をあげておきます。 <?PHP $maxStr=6; //文字数(3以上の数が必須) for ($i=48;$i<58;$i++) $arr[]= chr($i); //1~9 for ($i=65;$i<91;$i++) $arr[]= chr($i); //A~Z for ($i=97;$i<123;$i++) $arr[]= chr($i); //a~z $str=""; while(!(preg_match("/[0-9]/",$str) and preg_match("/[A-Z]/",$str) and preg_match("/[a-z]/",$str))){ $str=""; for($i=0;$i<$maxStr;$i++){ $str.=$arr[rand(0,count($arr)-1)]; } } print $str."<br>"; ?>
1~36の数字を乱数で発生させて数字と英字に置換。 これを6回繰り返す。 映画なんかでパスワードを1個1個確定しているシーンがあります。 ああいうイメージです。
補足
イメージ沸かないんですが・・・。PHP4でやっています。詳しく教えてください。お願い致します。m(_._)m