利用PHP实现短域名互转


Posted in PHP onJuly 05, 2013
/**
  * 短域名生成&解析类
  */
 class Build_URL {     private $mem;
     private $base_url = 'http://xxx.com/';
     public function  __construct() {
         $mem_conf    = array(
                 array(
                         'host'    => '192.168.10.90',
                         'port'    => '11116'
                 ),
                 array(
                         'host'    => '192.168.10.90',
                         'port'    => '11117'
                 ),
         );
         $this->mem    = new Memcache();
         foreach ($mem_conf as $v) {
             $this->mem->addServer($v['host'], $v['port']);
         }
     }
     public function encode($url) {
         $url    = trim($url);
         if(!preg_match("#^[http://|https://|ftp://]#iS", $url)) {
             return false;
         }
         $md5    = md5($url);
         $aid    = $this->mem->get($md5);
         if(!$aid) {
             if(($aid = $this->mem->increment('auto_increment_id')) === false) {
                 $this->mem->set('auto_increment_id', 10000);
                 $aid = $this->mem->increment('auto_increment_id');
             }
             $this->mem->set($md5, $aid);
             $key    = $this->dec2any($aid);
             $this->mem->set($key, $url);
         } else {
             $key    = $this->dec2any($aid);
         }
         return $this->base_url.$key;
     }
     public function decode($url) {
         $key    = str_replace($this->base_url, '', trim($url));
         return $this->mem->get($key);
     }
     private function dec2any($num, $base=62, $index=false) {
         $out = '';
         if (! $base ) {
             $base = strlen($index);
         } else if (! $index ) {
             $index = substr("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ,0 ,$base);
         }
         $t = ($num == 0) ? 0 : floor(log10($num) / log10($base));
         for ($t; $t >= 0; $t--) {
             $a = floor($num / pow( $base, $t ));
             $out = $out . substr($index, $a, 1);
             $num = $num - ($a * pow( $base, $t ));
         }
         return $out;
     }
 }
 $app = new Build_URL();
 $url = array(
     'http://www.baidu.com',
     'http://www.google.com',
     'https://3water.com'
 );
 foreach ($url as $v) {
     $sort    = $app->encode($v);
     echo "sort link: ".$sort."\n";
     $original    = $app->decode($sort);
     echo "original: ".$original."\n";
 }
 ?>
PHP 相关文章推荐
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php递归json类实例
Dec 02 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
PHP自定义错误处理的方法分析
Dec 19 PHP
PHP addslashes()函数讲解
Feb 03 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP 安全检测代码片段(分享)
Jul 05 #PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 #PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 #PHP
PHP系统命令函数使用分析
Jul 05 #PHP
解析PHP实现下载文件的两种方法
Jul 05 #PHP
国外十大最流行的PHP框架排名
Jul 04 #PHP
php字符串截取的简单方法
Jul 04 #PHP
You might like
PHP使用者状态管理功能的应用
2006/10/09 PHP
php 获取客户端的真实ip
2009/11/30 PHP
php抓取https的内容的代码
2010/04/06 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
PHP进程通信基础之信号
2017/02/19 PHP
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
2013/07/05 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
vue实现数据控制视图的原理解析
2020/01/07 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python获得一个月有多少天的方法
2015/06/04 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
解读python如何实现决策树算法
2018/10/11 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
py-charm延长试用期限实例
2019/12/22 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
C++的几个面试题附答案
2016/08/03 面试题
二胎满月酒致辞
2015/07/29 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
python 单机五子棋对战游戏
2022/04/28 Python