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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
最小化数据传输――在客户端存储数据
Oct 09 PHP
PHP读写文件的方法(生成HTML)
Nov 27 PHP
PHP nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
Aug 21 PHP
怎样去阅读一份php源代码
Aug 21 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
解析centos中Apache、php、mysql 默认安装路径
Jun 25 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
PHP Callable强制指定回调类型的方法
Aug 30 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 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下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
php获取excel文件数据
2017/04/21 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
理解javascript异步编程
2016/01/27 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
Python过滤列表用法实例分析
2016/04/29 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
Python递归实现打印多重列表代码
2020/02/27 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
JPA的优势都有哪些
2013/07/04 面试题
财务主管岗位职责
2014/02/28 职场文书
街道务虚会发言材料
2014/10/20 职场文书
出差报告范文
2014/11/06 职场文书
优秀教师先进材料
2014/12/16 职场文书
库房管理员岗位职责
2015/02/12 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书