荟萃馆

位置:首页 > 计算机 > php语言

php短域名互换实例

php语言6.86K

如今微博盛行,短网址也开始流行,当然,这样是为了控制更少的字数写更多的'内容。下面是小编分享的php短域名互换实例,一起来看一下吧。

php短域名互换实例

/**

* 短域名生成&解析类

*/

class Build_URL {

private $mem;

private $base_url = '';

public function __construct() {

$mem_conf = array(

array(

'host' => '',

'port' => '11116'

),

array(

'host' => '',

'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(

'',

'',

''

);

foreach ($url as $v) {

$sort = $app->encode($v);

echo "sort link: ".$sort."";

$original = $app->decode($sort);

echo "original: ".$original."";

}

?>

标签:PHP 域名 实例 互换