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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

php根據(jù)id生成10位不重復(fù)數(shù)字跟字母混合字符串

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

php根據(jù)id生成10位不重復(fù)數(shù)字跟字母混合字符串最終生成效果

S9q6Cdw9wBe5D9uS6Lw2w9G3KIJkwaQ0F8d6LSwbM7q3OvSDwCC8g4MLZ2wDS8L8d4xGwcs8f19VIowEQ5L2SV3bwFH9W42ctdwG

php代碼

<?phpnamespace App\Services;// 邀請(qǐng)碼服務(wù)class InviteCodeService{ protected $key,$num,$wordKey,$numericKey; public function __construct() { $this->key = 'X1A3B2abCDcEFGdH4eI5JfK6LgNM7OhP8QiR9SjTkUlVmWnSoYpZqrstuvwxyz'; $this->wordKey = 'AaBbCDcdeEfFgGihHIjJlKknmLqoNrwMpsvsOuPytQRzSTUVWSYZ'; $this->numericKey = '1234567890'; // 注意這個(gè)key里面不能出現(xiàn)數(shù)字0 否則當(dāng) 求模=0 會(huì)重復(fù)的 // 多少進(jìn)制 $this->num = strlen($this->key); } // 傳遞用戶(hù)id生成唯一邀請(qǐng)碼 public function enCode(int $user_id, $length = 10) { $code = $end = $begin = $middle = ''; // 邀請(qǐng)碼 //末尾用取模算法保證唯一 while ($user_id > 0) { // 轉(zhuǎn)進(jìn)制 $mod = $user_id % $this->num; // 求模 $user_id = ($user_id - $mod) / $this->num; $end = $this->key[$mod] . $end;} // 開(kāi)頭使用4位隨機(jī)的數(shù)字加字母 $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)]; // 中間用隨機(jī)字符串補(bǔ)充 while((strlen($begin)+strlen($middle)+strlen($end)) < $length){ $middle = $this->key[rand(0, $this->num - 1)] . $middle;} $code = $begin.$middle.$end; return $code; } /** * 邀請(qǐng)碼獲取用戶(hù)id 一般都不需要用到 * 這里的解密代碼不完整,思路是對(duì)的 * 解密思路 * 加密的時(shí)候最后一位記錄唯一串的長(zhǎng)度,也就是 $end 的長(zhǎng)度 * 解密的時(shí)候讀取串的最后一位獲得長(zhǎng)度,根據(jù)長(zhǎng)度獲取 $end 字符串 * $end 通過(guò)以下函數(shù)就能實(shí)現(xiàn)解密 * */ 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 數(shù)據(jù)是沒(méi)有重復(fù)的,并且邀請(qǐng)碼解 用戶(hù)id 也是正確的。

要注意的

$this->key 不能出現(xiàn)數(shù)字 0。

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

關(guān)于$this->key

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

// $this->key = 'abcdefghjkmnpqrstuvwxyz123456789'; // 沒(méi)打亂的$this->key = 'kh8sjpdazetnmb5yw7rq4gc9fuv3216x'; // 打亂的

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

為用戶(hù)體驗(yàn),$this->key 字符串別加 i o l 這些字母,因?yàn)槿菀谆煜脩?hù)。i : ll : 1o : 0 (當(dāng)然0 是不能出現(xiàn)的)很相似。

結(jié)尾

中間四位字符串確保有字符串+數(shù)字,

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

開(kāi)頭補(bǔ)充數(shù)字確保夠10位

以上就是php根據(jù)id生成10位不重復(fù)數(shù)字跟字母混合字符串的詳細(xì)內(nèi)容,更多關(guān)于php根據(jù)id生成10位不重復(fù)數(shù)字跟字母混合字符串的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
主站蜘蛛池模板: a免费视频 | 美女张开腿让男人桶的动态图 | 日韩1级片| 美女又黄又免费的视频 | 成人午夜网站 | 性欧美精品孕妇 | 日韩高清在线播放不卡 | 99热久久国产精品一区 | 日韩欧美在线视频观看 | 国自产精品手机在线视频香蕉 | 精品国产香蕉伊思人在线 | 久久视频精品36线视频在线观看 | 韩国免费特一级毛片 | 高清国产美女一级a毛片 | 日韩精品欧美激情国产一区 | 欧美色老头gay | 日本一级在线播放线观看免 | 美女扒开腿让男人桶爽免费动态图 | 亚洲美女视频网站 | 在线99 | 久久伊人男人的天堂网站 | 成年人视频在线免费播放 | 日本一级特黄a大片在线 | 国产精品成人免费综合 | 99精品高清不卡在线观看 | 欧美一级片 在线播放 | 美女毛片在线看 | 青青影院一区二区免费视频 | rion美乳弹出来四虎在线观看 | 日本68xxxxxxxxx老师 | 成人午夜看片在线观看 | 亚洲男人的天堂久久精品 | 毛片免费观看日本中文 | 国产精品久久久久久久专区 | 男人和女人的做刺激性视频 | 国产日韩精品欧美一区视频 | 亚洲依依成人综合在线网址 | 国产精品高清久久久久久久 | 久久久久久亚洲精品影院 | 在线综合+亚洲+欧美中文字幕 | 国产高清久久 |