/**
* 短域名生成&解析类
*/
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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我