我正在爲腳本創建一個隨機的5個字符的針腳。我想知道是否有其他人有更好的?隨機字母數字引腳?
$pin = '';
while($i != 5){
$string = '23456789abcdefghjkmnprstvwxyzABCDEFGHJKLMNPRSTVWXYZ';
$pos = rand(0,(strlen($string)-1));
$pin = $pin . $string[$pos];
$i++;
}
echo $pin;
我正在爲腳本創建一個隨機的5個字符的針腳。我想知道是否有其他人有更好的?隨機字母數字引腳?
$pin = '';
while($i != 5){
$string = '23456789abcdefghjkmnprstvwxyzABCDEFGHJKLMNPRSTVWXYZ';
$pos = rand(0,(strlen($string)-1));
$pin = $pin . $string[$pos];
$i++;
}
echo $pin;
只是略有不同/短。沒有理由每次都聲明有效的字符,for循環通常被認爲比while更好。
$pinlength = 5;
$charSet = '23456789abcdefghjkmnprstvwxyzABCDEFGHJKLMNPRSTVWXYZ';
$pin = '';
for($a = 0; $a < $pinlength; $a++) $pin .= $charSet[rand(0, strlen($charSet))];
echo $pin;
或者,只是爲了它的地獄:
$makeCharacterSelect =
function ($charSet) {return function use ($charSet)
{return $charSet[rand(0, strlen($charSet))];};
$pinlength = 5; $c = $makeCharacterSelect('23456789abcdefghjkmnprstvwxyzABCDEFGHJKLMNPRSTVWXYZ');
$pin = '';
for($a = 0; $a < $pinlength; $a++) $pin .= $c();
我認爲你的意思是'$ pin。='和'rand'而不是'$ rand'。 – 2011-03-17 01:27:31
我當然沒有= P謝謝 – 2011-03-17 01:29:24
$pin = substr(uniqid(), 0, 5); // Mind you, this doesn't contain
// upper-case letters
這將包括不需要的字符。它也不是隨機的,雖然這可能不是一個大問題 – 2011-03-17 01:20:53
我希望我的腳是地獄或FACK,即,你可能想要刪除所有的元音。 – tvanfosson 2011-03-17 01:16:12
您爲了可讀性而忽略了1,l,0和O? – 2011-03-17 01:18:53
沿着相同的路線,是不是很多小寫/大寫字母混淆?像'v'和'V'? – 2011-03-17 01:26:20