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 开发工具
Dec 06 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php实现json编码的方法
Jul 30 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
php文件上传的两种实现方法
Apr 04 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP实现用户登录的案例代码
May 10 PHP
php分享朋友圈的实现代码
Feb 18 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
我的论坛源代码(七)
2006/10/09 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
python使用matplotlib绘制折线图教程
2017/02/08 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python socket 聊天室实例代码详解
2019/11/14 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
店面销售职位的职责
2014/03/09 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
财会专业大学生求职信
2014/09/26 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书