PHP实现长网址与短网址

本文来自微信公众号 小7带你玩编程

什么是长链接、短链接

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

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

  • 更加美观,我们可以对长链接和短链接进行对比,很显然可以看出短链接相对成链接来说更加的短小,显得更加的美观。
  • 安全性,长链接可能会携带一些参数,例如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;
    }

}

创建一个curl处理函数

//简单处理下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);
时间: 2024-11-09 17:43:25

PHP实现长网址与短网址的相关文章

长网址转换短网址

可以用955网址转换网站 以下是原理:http://blog.sina.com.cn/s/blog_65db99840100lg4n.html(转) ----------------“今天看到新闻说谷歌的网址缩短服务(http://goo.gl/)向公众开放了,就想看看这短地址是怎么一回事,因为玩新浪微博的时候也经常碰到这个东西. 用我的博客地址http://blog.sina.com.cn/bluemonster0808生成的短地址是goo.gl/HdAU(值得注意的是同一个长地址每次生成的短

防护恶意网址用短网址欺骗的对策

随着微博的快速发展,微博用户数量呈爆炸式增长,微博用户间的信息传播.信息分享较之传统的网络形式进一步加速,所分享的内容也呈多样化趋势,使得短网址活跃起来.因为微博内容一般都有字数限制,较长的URL 地址会挤压正文的空间. 而短网址生成器正好解决了这种问题,借助短网址生成器可以用简短的网址替代原来冗长的网址,给用户留下更多的正文空间.在方便微博分享的同时,短网址也带来了一定的安全隐患.因为网址缩短后无法了解该网页的内容,致使用户完全无法辨认其是否具有危险.如果黑客将网页木马地址或者钓鱼网站地址通过

iOS 分享长网址转短网址

分享链接一般比较长,一般我们都有缩短网址的需求下面粘贴代码满足需求: NSString *shareUrl = @"www.example.com"; NSString *str = [NSString stringWithFormat:@"http://is.gd/create.php?format=json&url=%@",shareUrl]; str = [str stringByAddingPercentEscapesUsingEncoding:NS

长网址 短网址(http://www.zhihu.com/question/19852154?rf=21975802)

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接.例如:http://t.cn/SzjPjA 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场.估计很多朋友现在也正在使用. 看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个想

微博URL短网址生成算法原理及(java版、php版实现实例)

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://t.cn/SzjPjA 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场.估计很多朋友现在也正在使用. 看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个

微博短网址生成算法原理

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://980.so/3u0JzX 表示http://www.ganmall.com.cn/h/detail/dp_928.html?chl=dwz9801 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很

短网址生成API接口【最新版】分析一下现在市面上的短网址情景

目前市面上主流短链接有百度.腾讯.淘宝和新浪,下面各自分析下他们的优缺点 百度短网址 百度短网址是收费项目,相对来说功能多一点,官方是这样介绍的:百度短网址服务可以帮助你把一个长网址缩短,方便你在社交网络和第三方平台上分享链接,投放广告等等. 百度具有超简单的方式使用短网址服务:访问百度短网址首页https://dwz.cn,生成对应的短网址.你还可以调用百度短网址服务API服务,查看数据统计与分析! 之前的百度短网址是需要大站才能申请,后来变成了都可以但需要2个小时的审核时间,现在是即时的 缺

数据结构与算法简记--实现一个短网址系统

实现一个短网址系统 短网址服务 把一个长的网址转化成一个短的网址,访问这个短网址,就相当于访问原始的网址 原始网址:https://github.com/wangzheng0822/ratelimiter4j 短网址:http://t.cn/EtR9QEG 上面第二个网址是通过新浪提供的短网址服务生成的 核心功能: 把原始的长网址转化成短网址 当用户点击短网址的时候,短网址服务会将浏览器重定向为原始网址 如何通过哈希算法生成短网址? 使用比较著名并且应用广泛的一个哈希算法:MurmurHash

微信开发第8章 通过accesstoken将长连接转换为短链接

业务场景:开发的过程中经常会有一些很长的链接,这个时候如果生成二维码,会导致扫码的过程中识别比较慢,如果存入数据库,会导致数据库的字段长度要设定的很长才行,所以把长连接转换为短链接就越来越重要了. 接口说明文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433600&token=&lang=zh_CN 接口调用URL:https://api.weixin.qq.com/cgi-bin/shorturl