利用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&MYSQL留言板源码
Jul 19 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
php 获取远程网页内容的函数
Sep 08 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
May 18 PHP
PHP获取远程图片并保存到本地的方法
May 12 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
PHP 7.0新增加的特性介绍
Jun 08 PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php中的依赖注入实例详解
Aug 14 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
如何去掉文章里的 html 语法
2006/10/09 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
javascript实现的右下角弹窗实例
2015/04/24 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Python restful框架接口开发实现
2020/04/13 Python
python代码区分大小写吗
2020/06/17 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
查环查孕证明
2014/01/10 职场文书
服装采购员岗位职责
2014/03/15 职场文书
捐书活动总结
2014/05/04 职场文书
员工家属慰问信
2015/03/24 职场文书
论文致谢词范文
2015/05/14 职场文书