PHP长网址与短网址的实现方法


Posted in PHP onOctober 13, 2017

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

什么是长链接、短链接

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

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

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

安全性,长链接可能会携带一些参数,例如http://xxx.xxx.xxx?id=1¶m1=san,我们能够轻松的看出,该url采用的是get的方式,同时也能看出请求了哪些参数。然而短链接http://t.cn/RNGQRUJ,我们只能访问不能轻易的查看处携带了哪些参数等条件。

示例代码下载地址:链接: https://pan.baidu.com/s/1kVh4FQ3 密码: 4r8p

使用场景

微博内容的分享

短信包含的链接

微信分享链接

实现方法

按照百度百科的解释,长链接转换为短链接主要采用了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);

总结

以上所述是小编给大家介绍的PHP长网址与短网址的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php下通过POST还是GET来传值
Jun 05 PHP
php抓取https的内容的代码
Apr 06 PHP
php全排列递归算法代码
Oct 09 PHP
PHP同时连接多个mysql数据库示例代码
Mar 17 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
php实现构建排除当前元素的乘积数组方法
Oct 06 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
解决laravel session失效的问题
Oct 14 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 #PHP
thinkphp中的多表关联查询的实例详解
Oct 12 #PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 #PHP
利用PHP实现开心消消乐的算法示例
Oct 12 #PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 #PHP
php表单习惯用的正则表达式
Oct 11 #PHP
彻底搞懂PHP 变量结构体
Oct 11 #PHP
You might like
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
PHP内存溢出优化代码详解
2021/02/26 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
AngularJS入门教程之AngularJS 模板
2016/08/18 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
文秘专业应届生求职信范文
2013/11/14 职场文书
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
感谢信模板大全
2015/01/23 职场文书
师范生见习总结范文
2015/06/23 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL