zoukankan      html  css  js  c++  java
  • PHP实现长网址与短网址

    原文地址:http://www.qqdeveloper.com/detail/29/1.html

    什么是长链接、短链接

    顾名思义,长链接就是一个很长的链接;短链接就是一个很短的链接。长链接可以生成短链接,短链接来源于长链接。

    为什么要使用长链接、短链接

    • 更加美观,我们可以对长链接和短链接进行对比,很显然可以看出短链接相对成链接来说更加的短小,显得更加的美观。

    • 安全性,长链接可能会携带一些参数,例如http://xxx.xxx.xxx?id=1&param1=san,我们能够轻松的看出,该url采用的是

      get的方式,同时也能看出请求了哪些参数。然而短链接http://t.cn/RNGQRUJ,我们只能访问不能轻易的查看处携带了

      哪些参数等条件。

    使用场景

    • 微博内容的分享

    • 短信包含的链接

    • 微信分享链接

    实现方法

        ​按照百度百科的解释,长链接转换为短链接主要采用了md5加密的方式来实现转换的。

    代码实现

    • 创建一个curl工具函数 

    // SINA_APPKEY就是你在微信开发者平台的appkey
    define('SINA_APPKEY', '');
    function curlQuery($url)
    {
        //设置附加HTTP头
        $addHead = array(
            "Content-type: application/json",
        );
        //初始化curl,当然,你也可以用fsockopen代替
        $curl_obj = curl_init();
        //设置网址
        curl_setopt($curl_obj, CURLOPT_URL, $url);
        //附加Head内容
        curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);
        //是否输出返回头信息
        curl_setopt($curl_obj, CURLOPT_HEADER, 0);
        //将curl_exec的结果返回
        curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
        //设置超时时间
        curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);
        //执行
        $result = curl_exec($curl_obj);
        //关闭curl回话
        curl_close($curl_obj);
        return $result;
    }
    • 创建短链接和长链接的方法

    //根据长网址获取短网址
    function sinaShortenUrl($long_url)
    {
        //拼接请求地址,此地址你可以在官方的文档中查看到
        $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY . '&url_long=' . $long_url;
        //获取请求结果
        $result = curlQuery($url);
        //下面这行注释用于调试,
        //print_r($result);exit();
        //解析json
        $json = json_decode($result);
        //异常情况返回false
        if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '') {
            return false;
        } else {
            return $json[0]->url_short;
        }
    
    }
    //根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数
    function sinaExpandUrl($short_url)
    {
        //拼接请求地址,此地址你可以在官方的文档中查看到
        $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY . '&url_short=' . $short_url;
        //获取请求结果
        $result = curlQuery($url);
        //下面这行注释用于调试
        //print_r($result);exit();
        //解析json
        $json = json_decode($result);
        //异常情况返回false
        if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '') {
            return false;
        } else {
            return $json[0]->url_long;
        }
    
    }
    • 创建一个url处理函数

    //简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误
    function filterUrl($url = '')
    {
        $url = trim(strtolower($url));
        $url = trim(preg_replace('/^http://', '', $url));
        if ($url == '') {
            return false;
        } else {
            return urlencode('http://' . $url);
        }
    
    }
    • 调用函数

    //要缩短的网址
    $url = "http://www.qqdeveloper.com/detail/25/1.html"; //这里自己看着办,修改成你要缩短的网址还是获取post的数据还是怎么滴。
    $url = filterUrl($url); //对URL进行简单处理的方法
    echo $short = sinaShortenUrl($url); //根据传入的长网址生产短网址
    echo "</br>";
    echo $ulong = sinaExpandUrl($short);
    

    示例代码下载地址:http://pan.baidu.com/s/1jI9oLxG

  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/qqblog/p/7457010.html
Copyright © 2011-2022 走看看