Re: [請益] 怎麼保証不會產生重覆的亂數
個人認為,如果要產生亂數的話,的確最好的辦法是使用內建函式
uniqid(),至於你希望在亂數中可以不要有混淆不清的oO0,或是iIl
其實可以在產生之後,再將這些字串取代就好了
整個程式寫起來的感覺大概是下面這樣
/**
* 產生亂數序號
*
* @param int $strlen 序號的長度
*/
function getSN($strlen=10){
//產生不重複的字串(全部是小寫)
$sn = md5(uniqid(mt_rand(), true));
//擷取所需的亂數長度
$sn = substr ($sn, 1, $strlen);
//必需過濾的字元(可再追加其它,XD不過通常應該沒有了)
$filter = array('o','i','0','l');
foreach($filter as $char){
//產生用來取代的字元
//這邊也可以使用亂數來產生
//不過個人覺得只是多餘=3=
$replace_char = 'a';
//進行取代
$sn = str_replace($char,$replace_char,$sn);
}
//最後再轉成大寫回傳(聽說這樣比較像序號)
return strtoupper($sn);
}
不過或許原PO有特別的需求,再必需從資料庫中再重新組合@_@
如果是這樣,請忽略此文章=3=
--
歡迎來我的網誌看看
@ http://liaosankai.pixnet.net/blog
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.92.213
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章