色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

php根據id生成10位不重復數字跟字母混合字符串

瀏覽:130日期:2022-06-14 10:17:01

php根據id生成10位不重復數字跟字母混合字符串最終生成效果

S9q6Cdw9wBe5D9uS6Lw2w9G3KIJkwaQ0F8d6LSwbM7q3OvSDwCC8g4MLZ2wDS8L8d4xGwcs8f19VIowEQ5L2SV3bwFH9W42ctdwG

php代碼

<?phpnamespace App\Services;// 邀請碼服務class InviteCodeService{ protected $key,$num,$wordKey,$numericKey; public function __construct() { $this->key = 'X1A3B2abCDcEFGdH4eI5JfK6LgNM7OhP8QiR9SjTkUlVmWnSoYpZqrstuvwxyz'; $this->wordKey = 'AaBbCDcdeEfFgGihHIjJlKknmLqoNrwMpsvsOuPytQRzSTUVWSYZ'; $this->numericKey = '1234567890'; // 注意這個key里面不能出現數字0 否則當 求模=0 會重復的 // 多少進制 $this->num = strlen($this->key); } // 傳遞用戶id生成唯一邀請碼 public function enCode(int $user_id, $length = 10) { $code = $end = $begin = $middle = ''; // 邀請碼 //末尾用取模算法保證唯一 while ($user_id > 0) { // 轉進制 $mod = $user_id % $this->num; // 求模 $user_id = ($user_id - $mod) / $this->num; $end = $this->key[$mod] . $end;} // 開頭使用4位隨機的數字加字母 $begin = $this->wordKey[rand(0, strlen($this->wordKey) - 1)] . $this->numericKey[rand(0, strlen($this->numericKey) - 1)] . $this->wordKey[rand(0, strlen($this->wordKey) - 1)] . $this->numericKey[rand(0, strlen($this->numericKey) - 1)]; // 中間用隨機字符串補充 while((strlen($begin)+strlen($middle)+strlen($end)) < $length){ $middle = $this->key[rand(0, $this->num - 1)] . $middle;} $code = $begin.$middle.$end; return $code; } /** * 邀請碼獲取用戶id 一般都不需要用到 * 這里的解密代碼不完整,思路是對的 * 解密思路 * 加密的時候最后一位記錄唯一串的長度,也就是 $end 的長度 * 解密的時候讀取串的最后一位獲得長度,根據長度獲取 $end 字符串 * $end 通過以下函數就能實現解密 * */ function deCode($code) {if (strrpos($code, '0') !== false) $code = substr($code, strrpos($code, '0') + 1);$len = strlen($code);$code = strrev($code);$user_id = 0;for ($i = 0; $i < $len; $i++) $user_id += strpos($this->key, $code[$i]) * pow($this->num, $i);return $user_id; }$a = 3600;$b = $a + 10;for($i=$a ; $i<$b;$i++){ echo (new InviteCodeService)->enCode($i); echo PHP_EOL;}

20w 數據是沒有重復的,并且邀請碼解 用戶id 也是正確的。

要注意的

$this->key 不能出現數字 0。

$this->key 不能有重復的字符串。 如: abccd c重復。

關于$this->key

$this->key 順序可以打亂的,

// $this->key = 'abcdefghjkmnpqrstuvwxyz123456789'; // 沒打亂的$this->key = 'kh8sjpdazetnmb5yw7rq4gc9fuv3216x'; // 打亂的

$this->key 長度不限制, 但是最好別太短。如 abcd: 最大的 用戶id 是4的3次方 (256)超過256會怎么樣? 邀請碼變成5位而已 ……. ,不好看。

為用戶體驗,$this->key 字符串別加 i o l 這些字母,因為容易混淆用戶。i : ll : 1o : 0 (當然0 是不能出現的)很相似。

結尾

中間四位字符串確保有字符串+數字,

尾數6位數確保隨機性,6位數足夠61^6次方,也就是 51520374361,這個數字比 int(11)表示的最大值 2147483648 還要大 49372890713。5位數就足夠覆蓋 int(11),剩余一位由開頭補充

開頭補充數字確保夠10位

以上就是php根據id生成10位不重復數字跟字母混合字符串的詳細內容,更多關于php根據id生成10位不重復數字跟字母混合字符串的資料請關注好吧啦網其它相關文章!

標簽: PHP
主站蜘蛛池模板: 国产欧美日韩精品第一区 | 成人精品视频在线观看 | 亚洲精品高清久久 | 亚洲视频在线观看视频 | 无内丝袜透明在线播放 | 亚洲性色视频 | 国产免费观看a大片的网站 国产免费黄色网址 | 久久国产三级精品 | 欧美午夜视频一区二区三区 | 99视频久久精品久久 | 免费看欧美日韩一区二区三区 | 99国产福利视频区 | 久久久久18 | 成人欧美精品一区二区不卡 | 国产亚洲欧美日韩在线观看不卡 | 久久久久9999| 日本特黄特色大片免费视频网站 | 15—17女人毛片 | 亚洲午夜精品久久久久久抢 | 成人亚洲国产精品久久 | 色偷偷在线刺激免费视频 | 国产成人免费不卡在线观看 | 99久久精品免费看国产免费 | 思99re久久这里只有精品首页 | 欧美大片在线播放 | 成人日韩在线观看 | 国产一级aaaaa毛片欧美 | 久久精品免看国产成 | 午夜桃色剧场 | 99视频国产热精品视频 | 精品久久久久久中文字幕 | 伊人婷婷色香五月综合缴激情 | 福利视频在线午夜老司机 | 日韩中文精品亚洲第三区 | 久久综合亚洲一区二区三区 | 日韩性片 | 可以看毛片的网址 | 国产精彩视频在线 | 2017天天爽夜夜爽精品视频 | 成年性午夜免费视频网站不卡 | 99久久国产综合精品五月天 |