PHP 短网址编码转换程序,10进制与62进制互转(转)
分类 网站技术/村民张先生 发布于 2017-03-12 09:08
*******************
36进制以内的互转,可使用PHP自带函数 base_convert ,
其中2代表数值本身的进制,10代表要转换的进制,两者均不能超过36。
base_convert('100000000000',2,10);
*******************
1、获取该条记录的自增ID;
2、将自增转换为62进制,并拼接网址。如:http://xxx.com/w7e
3、用户访问到 http://xxx.com/w7e 时,提取短网址后缀 w7e ;
4、将短网址后缀转换为10进制,得到自增ID号,如:123456
5、使用查询该记录,进行业务逻辑处理(比如跳转)。
/** * 十进制数转换成62进制 * * @param integer $num * @return string */ function from10_to62($num) { $to = 62; $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $ret = ''; do { $ret = $dict[bcmod($num, $to)] . $ret; $num = bcdiv($num, $to); } while ($num > 0); return $ret; }
/** * 62进制数转换成十进制数 * * @param string $num * @return string */ function from62_to10($num) { $from = 62; $num = strval($num); $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $len = strlen($num); $dec = 0; for($i = 0; $i < $len; $i++) { $pos = strpos($dict, $num[$i]); $dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec); } return $dec; }
来源:http://blog.csdn.net/zxjiayou1314/article/details/52454370
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截