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 和 MySQL 时区的一点总结
Mar 26 PHP
php源代码安装常见错误与解决办法分享
May 28 PHP
深入PHP FTP类的详解
Jun 13 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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 split()函数的用法详解
2013/06/05 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
为超链接加上disabled后的故事
2010/12/10 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
js使用递归解析xml
2014/12/12 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python通过实例讲解反射机制
2019/10/17 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
企业文化理念标语
2014/06/10 职场文书
大跃进口号
2014/06/16 职场文书
2014年施工员工作总结
2014/11/18 职场文书
大学生求职自荐信
2015/03/24 职场文书
经济纠纷起诉状
2015/05/20 职场文书
平凡的世界读书笔记
2015/06/25 职场文书
创业计划书详解
2019/07/19 职场文书
Nginx中使用Lua脚本与图片的缩略图处理的实现
2022/03/18 Servers