• 技术文章 >后端开发 >php教程

    利用PHP实现短域名互转_PHP

    2016-06-01 12:03:52原创296
    复制代码 代码如下:
    /**
    * 短域名生成&解析类
    */
    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.bitsCN.com'
    );
    foreach ($url as $v) {
    $sort = $app->encode($v);
    echo "sort link: ".$sort."\n";
    $original = $app->decode($sort);
    echo "original: ".$original."\n";
    }
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 短域名 互转
    上一篇:PHP Session 变量的使用方法详解与实例代码_PHP 下一篇:php jq jquery getJSON跨域提交数据完整版_PHP

    相关文章推荐

    • 对PHP排序稳定性问题的深思!• PHP下MAIL的另一解决方案_PHP教程• PHP file_get_contents 函数超时的几种解决方法_php技巧• PHP日期时间函数的高级应用技巧_php技巧• php miniBB中文乱码问题解决方法_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网