利用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 相关文章推荐
利用static实现表格的颜色隔行显示
Oct 09 PHP
使用php重新实现PHP脚本引擎内置函数
Mar 06 PHP
一家之言的经验之谈php+mysql扎实个人基本功
Mar 27 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
PHP7 新特性详细介绍
Sep 06 PHP
PHP解决中文乱码
Apr 28 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 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
计数器详细设计
2006/10/09 PHP
PHP学习之正则表达式
2011/04/17 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
php生成图片缩略图功能示例
2017/02/22 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
jQuery调用WebService的实现代码
2011/06/19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
python列表去重的二种方法
2014/02/14 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
基于python3监控服务器状态进行邮件报警
2019/10/19 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
繁星春水读书笔记
2015/06/30 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
MySQL开启事务的方式
2021/06/26 MySQL
深入理解go slice结构
2021/09/15 Golang