工作上的需要,寫了一個簡單的隨機亂數字串,講一下中間要求的規則:
- 產生 N 筆不重複的隨機字串,字串包含有 數字 與 英文
- 排除特定字元,像是很類似的 O 與 0 或是 小寫 l 與大寫 I
- 字串長度為八碼
1 2 3 4 5 6 7 8 9 10 11 12 |
set_time_limit(0); ##運行時間可能會超過30秒,所以設置為無限 $temp = array(); while(count($temp)<200){ ##產生200個字串 $string=substr(md5(uniqid(rand())),0,8); ##產生隨機字串 $string = preg_replace('/\[O|0|I|i|L\]/',rand(1,9),$string); #排除掉特定字元 if(!in_array($string,$temp)){ $temp[] = $string; }else{ continue; } } print_r($temp); |
隨機字串的產生我用uniqid()函數跟MD5一起產生的,然後再切前8個字元
整支程式並不困難,缺點是如果要生產的字串越多,跑到後面就會越慢
畢竟要比對是否重複的量越來越多
如果有錯誤或是可以改良的請告訴我 😛