利用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 HTML代码串 截取实现代码
Jun 29 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
php格式文件打开的四种方法
Feb 24 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 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将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
javascript获取dom的下一个节点方法
2014/09/05 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
关于layui导航栏不展示下拉列表的解决方法
2019/09/25 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python探索之自定义实现线程池
2017/10/27 Python
python机器学习之神经网络(三)
2017/12/20 Python
Python for循环中的陷阱详解
2018/07/13 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
西安众合通用.net笔试题
2013/03/18 面试题
.NET现在共支持多少种语言
2014/02/26 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
敬老院活动总结
2014/04/28 职场文书
优秀家长自荐材料
2014/08/26 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android
详解flex:1什么意思
2022/07/23 HTML / CSS