利用PHP实现短域名互转
2015-01-24信息快讯网
如何使用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"; } ?>