加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

借助PHP实现短域名互转

发布时间:2022-07-22 14:04:32 所属栏目:PHP教程 来源:互联网
导读:如何使用PHP实现短域名互转?下面的代码可以帮助你实现,非常简单,需要的朋友可以参考下 复制代码 代码如下: /** * 短域名生成解析类 */ class Build_URL { private $mem; private $base_url = http://xxx.com/; public function __construct() { $mem_co
  如何使用PHP实现短域名互转?下面的代码可以帮助你实现,非常简单,需要的朋友可以参考下 复制代码 代码如下:
 
  /**
 
    * 短域名生成&解析类
 
    */
 
   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',
 
       'http://www.jb51.net'
 
   );
 
   foreach ($url as $v) {
 
       $sort    = $app->encode($v);
 
       echo "sort link: ".$sort."/n";
 
       $original    = $app->decode($sort);
 
       echo "original: ".$original."/n";
 
   }
 
   ?>。
 

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!