プロが教えるわが家の防犯対策術!

半角数字と半角英字混じりで6文字の乱数を作りたいのですがどのようにしたら良いですか?こんなこと出来るのでしょうか?

A 回答 (3件)

以前同じようなプログラムを作ったことがあります。


今回のご質問の条件に合せると、以下のようなプログラムになると思います。

$chrs = "abcdefghijklmnopqrstuvwxyz0123456789";
$ch = "";
for ($i=0; $i<6; $i++) $ch .= $chrs[mt_rand(0, strlen($chrs)-1)];
echo $ch;
    • good
    • 0

若干仕様定義があいまいですね。



>半角数字と半角英字混じりで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>";
?>
    • good
    • 0

1~36の数字を乱数で発生させて数字と英字に置換。


これを6回繰り返す。
映画なんかでパスワードを1個1個確定しているシーンがあります。
ああいうイメージです。

この回答への補足

イメージ沸かないんですが・・・。PHP4でやっています。詳しく教えてください。お願い致します。m(_._)m

補足日時:2006/12/09 19:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!