利用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', '//www.jb51.net' ); foreach ($url as $v) { $sort = $app->encode($v); echo "sort link: ".$sort."\n"; $original = $app->decode($sort); echo "original: ".$original."\n"; } ?>
相关推荐
zyyjay 2020-11-09
xuebingnan 2020-11-05
samtrue 2020-11-22
stefan0 2020-11-22
yifangs 2020-10-13
songshijiazuaa 2020-09-24
hebiwtc 2020-09-18
天步 2020-09-17
83911535 2020-11-13
whatsyourname 2020-11-13
zhouyuqi 2020-11-10
Noneyes 2020-11-10
mathchao 2020-10-28
王志龙 2020-10-28
wwwsurfphpseocom 2020-10-28
diskingchuan 2020-10-23
savorTheFlavor 2020-10-23