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 字符转义 注意事项
May 27 PHP
php strcmp使用说明
Apr 22 PHP
JS 网站性能优化笔记
May 24 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
解析argc argv在php中的应用
Jun 24 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
Symfony2联合查询实现方法
Mar 18 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
php下载远程大文件(获取远程文件大小)的实例
Jun 17 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 PHP
php微信小程序解包过程实例详解
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
php设计模式 Facade(外观模式)
2011/06/26 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
popdiv
2006/07/14 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
js判断鼠标位置是否在某个div中的方法
2016/02/26 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
《少年王冕》教学反思
2014/04/11 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
地质灾害防治方案
2014/05/14 职场文书
销售员态度差检讨书
2014/10/26 职场文书
贪污检举信范文
2015/03/02 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript