PHP短域名互转的解决办法

内容摘要
这篇文章主要为大家详细介绍了PHP短域名互转的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
代码如下:


/**
* 短域
文章正文

这篇文章主要为大家详细介绍了PHP短域名互转的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随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',
 'https://www.idcnote.com'
);
foreach ($url as $v) {
 $sort = $app->encode($v);
 echo "sort link: ".$sort."\n";
 $original = $app->decode($sort);
 echo "original: ".$original."\n";
}
?>

注:关于PHP短域名互转的简单示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!