利用PHP实现短域名互转

前端技术 2023/09/07 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.phpstudy.net\'
 );
 foreach ($url as $v) {
     $sort    = $app->encode($v);
     echo \"sort link: \".$sort.\"\\n\";
     $original    = $app->decode($sort);
     echo \"original: \".$original.\"\\n\";
 }
 ?>

本文地址:https://www.stayed.cn/item/17683

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。