利用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 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
php类中private属性继承问题分析
Nov 01 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
PHP如何使用Memcached
Apr 05 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
跨域传值即主页面与iframe之间互相传值
2013/12/09 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
js编写简易的计算器
2020/07/29 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
详解Python中for循环的使用方法
2015/05/14 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python编程使用协程并发的优缺点
2018/09/20 Python
Django框架模板介绍
2019/01/15 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
python中的yield from语法快速学习
2020/11/06 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
世界最大的票务市场:viagogo
2017/02/16 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
保密普查工作实施方案
2014/02/25 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
通报表扬范文
2015/01/17 职场文书
鲁迅故里导游词
2015/02/05 职场文书
闪闪的红星观后感
2015/06/08 职场文书
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers