利用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作的文本留言本的例子(六)
Oct 09 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php构造函数实例讲解
Nov 13 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP7.0安装笔记整理
Aug 28 PHP
10款实用的PHP开源工具
Oct 23 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
提问的智慧
2006/10/09 PHP
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
php intval的测试代码发现问题
2008/07/27 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
js实现批量删除功能
2020/08/27 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Django接收自定义http header过程详解
2019/08/23 Python
Django实现文件上传下载
2019/10/06 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
详解python 中in 的 用法
2019/12/12 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
喝酒检查书范文
2014/02/23 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
导游词之山海关
2019/12/10 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python