利用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 相关文章推荐
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
Feb 22 PHP
PHP下利用header()函数设置浏览器缓存的代码
Sep 01 PHP
zen cart新进商品的随机排序修改方法
Sep 10 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
深入解析php之apc
May 15 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php调用新浪短链接API的方法
Nov 08 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
php 使用expat方式解析xml文件操作示例
Nov 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
详解如何使用Python编写vim插件
2017/11/28 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
解决使用export_graphviz可视化树报错的问题
2019/08/09 Python
python matplotlib拟合直线的实现
2019/11/19 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
财务科科长岗位职责
2014/03/10 职场文书
品德评语大全
2014/05/05 职场文书
工作检讨书大全
2015/01/26 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
python之基数排序的实现
2021/07/26 Python
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL