利用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函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
php广告加载类用法实例
Sep 23 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
Laravel5中Cookie的使用详解
May 03 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
浅谈PHP进程管理
Mar 08 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
php后门URL的防范
2013/11/12 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
javascript每日必学之继承
2016/02/23 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[01:38]DOTA2 2015国际邀请赛中国区预选赛 Showopen
2015/06/01 DOTA
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
物流经理自我评价
2013/09/23 职场文书
施工单位安全责任书
2014/07/24 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
单位未婚证明范本
2014/11/25 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
员工工作表扬信
2015/05/05 职场文书
大学生求职意向书
2015/05/11 职场文书
行政上诉状范文
2015/05/23 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
Python自动化实战之接口请求的实现
2022/05/30 Python