利用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抓即时股票信息
Oct 09 PHP
PHP版自动生成文章摘要
Jul 23 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
PHP中的静态变量及static静态变量使用详解
Nov 05 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
Apr 10 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 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中mysql操作buffer用法详解
2015/03/19 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
javascript引用对象的方法
2007/01/11 Javascript
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
2014/05/27 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
JS实现复制功能
2017/03/01 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
利用python将json数据转换为csv格式的方法
2018/03/22 Python
值得收藏的10道python 面试题
2019/04/15 Python
Python与C/C++的相互调用案例
2021/03/04 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
自荐信封面
2013/12/04 职场文书
服装厂厂长岗位职责
2013/12/27 职场文书
日语系毕业求职信
2014/07/27 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
锦旗赠语
2015/06/23 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
mysql中整数数据类型tinyint详解
2021/12/06 MySQL