利用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 if 想到的些问题
Mar 22 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
PHP生成Gif图片验证码
Oct 27 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 PHP
php输出形式实例整理
May 05 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 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中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
jQuery 注意事项 与原因分析
2009/04/24 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
JavaScript实现网页动态生成表格
2020/11/25 Javascript
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Pycharm小白级简单使用教程
2020/01/08 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
幼师求职自荐信范文
2014/01/26 职场文书
个人贷款承诺书
2014/03/28 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
团队拓展活动方案
2014/08/28 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
法定授权委托证明书
2015/06/18 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis