ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して短いドメイン名を実現する_相互転送_PHP チュートリアル

PHP を使用して短いドメイン名を実現する_相互転送_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:01:19793ブラウズ

コードをコピーします コードは次のとおりです:

/**
* 短いドメイン名の生成と解析クラス
*/
class Build_URL {

private $mem;
private $base_url = 'http://xxx.com/';

public function __construct() {
$mem_conf = array( : 1116'
),
array(
'ホスト' => '192.168.10.90',
'ポート' = > '11117'
),
);
$this->mem = new Memcache();
foreach ($mem_conf as $v) {
$this->mem->addServer($v[' host'], $v['port']);
}
}

public function encode($url) {
$url =rim($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-& gt;set($md5, $ aid);
$key = $this->dec2any($aid);
$this->mem->set($key, $url);
} else {
$key = gt; dec2any($aid);
}

return $this->base_url.$key;
}

public function decode($url) {
$key = str_replace($this->base_url, ”、トリミング($url));
return $this->mem->get($key);
}

プライベート関数 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";
}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/328002.html技術記事复制代码代码如下: /*** 短いドメイン名の生成nbsp;*/ class Build_URL { private $mem;プライベート $base_url = 'http://xxx.com/'; public function __construct() { $mem_conf = array( a...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。