• 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

  • 相关阅读:
    cookie标准话
    thinkphp关联查询
    jq获取表单值与赋值代码
    Github使用.gitignore文件忽略不必要上传的文件 (转)
    python 库 Numpy 中如何求取向量范数 np.linalg.norm(求范数)(向量的第二范数为传统意义上的向量长度),(如何求取向量的单位向量)
    word 使用中 上标符号的实现
    python 编程中的一个关于图片的库 imageio (读取照片RGB内容,转换照片格式)
    交叉熵代价函数(作用及公式推导) ------转载
    cousera 深度学习 吴恩达 第一课 第二周 学习率对优化结果的影响
    python3 读入一个jpg格式的图片,并转换长宽像素个数,然后进行绘制
  • 原文地址:https://www.cnblogs.com/qqblog/p/7457010.html
Copyright © 2020-2023  润新知