Re: [請益] 怎麼保証不會產生重覆的亂數

看板PHP作者 (低溫烘焙)時間15年前 (2010/05/13 10:50), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
個人認為,如果要產生亂數的話,的確最好的辦法是使用內建函式 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
文章代碼(AID): #1BwsZ-89 (PHP)
文章代碼(AID): #1BwsZ-89 (PHP)