利用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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
PHP基础知识回顾
Aug 16 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
Yii实现简单分页的方法
Apr 29 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
php 多继承的几种常见实现方法示例
Nov 18 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支持断点续传的源码
2010/05/16 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
机器学习10大经典算法详解
2017/12/07 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python中的单行、多行、中文注释方法
2018/07/19 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
党代会心得体会
2014/09/04 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
警察群众路线整改措施
2014/09/26 职场文书
营销与策划实训报告
2014/11/05 职场文书
工作后的感想
2015/08/07 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers