利用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 相关文章推荐
PHP 压缩文件夹的类代码
Nov 05 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
php导出CSV抽象类实例
Sep 24 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
php中序列化与反序列化详解
Feb 13 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
PHP中rename()函数的妙用讲解
Feb 28 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
数据库的日期格式转换
2006/10/09 PHP
PHP函数utf8转gb2312编码
2006/12/21 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
IE6 fixed的完美解决方案
2011/03/31 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
Python输出各行命令详解
2018/02/01 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
空指针到底是什么
2012/08/07 面试题
庆祝国庆节演讲稿2014
2014/09/19 职场文书
开国大典观后感
2015/06/04 职场文书
话题作文之自信作文
2019/11/15 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫
MySQL 字符集 character
2022/05/04 MySQL