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

  • 相关阅读:
    windows bat
    如何重置postgresql用户密码
    SQL Server如何修改登录密码
    MySQL操作题(mysql_V20190307)
    MariaDB主从备份
    MySQL&MariaDB数据库备份脚本
    SQL语句大全,所有的SQL都在这里
    数据库操作语句大全(sql)
    Python代码,将图片转为了Excel
    亚晨yacn软件config数据获取
  • 原文地址:https://www.cnblogs.com/qqblog/p/7457010.html
Copyright © 2011-2022 走看看