PHP通过调用新浪API生成t.cn格式短网址链接的方法详解


Posted in PHP onFebruary 20, 2019

本文实例讲述了PHP通过调用新浪API生成t.cn格式短网址链接的方法。分享给大家供大家参考,具体如下:

新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx 这种格式的短链接。

API:

http://api.t.sina.com.cn/short_url/shorten.json (返回结果是JSON格式)
http://api.t.sina.com.cn/short_url/shorten.xml (返回结果是XML格式)

请求参数:

source 申请应用时分配的AppKey,调用接口时代表应用的唯一身份。
url_long 需要转换的长链接,需要URLencoded,最多不超过20个。
多个url参数需要使用如下方式请求:url_long=aaa&url_long=bbb

创建source方法

1.进入http://open.weibo.com/ ,选择菜单 微连接->网站接入。
2.点击立即接入,创建新应用,随便填写应用名称,点击创建。
3.创建成功后,AppKey就是source参数的值,可以用于请求创建短链接。

测试代码:

<?php
$api = 'http://api.t.sina.com.cn/short_url/shorten.json'; // json
// $api = 'http://api.t.sina.com.cn/short_url/shorten.xml'; // xml
$source = '您申请的AppKey';
$url_long = 'https://3water.com/';
$request_url = sprintf($api.'?source=%s&url_long=%s', $source, $url_long);
$data = file_get_contents($request_url);
echo $data;
?>

返回JSON格式

[
  {
    "url_short": "http:\/\/t.cn\/Rki0twp",
    "url_long": "http:\/\/www.cnblogs.com\/daxiangxm",
    "type": 0
  }
]

返回XML格式

<?xml version="1.0" encoding="UTF-8"?><urls>
  <url>
    <url_short>http://t.cn/RBclsRo</url_short>
    <url_long>https://3water.com/</url_long>
    <type>0</type>
  </url></urls>

生成的短链接为 http://t.cn/RBclsRo ,访问会跳转到 https://3water.com/

完整调用方法如下:

<?php/**
 * 调用新浪接口将长链接转为短链接
 * @param string    $source  申请应用的AppKey
 * @param array|string $url_long 长链接,支持多个转换(需要先执行urlencode)
 * @return array
 */function getSinaShortUrl($source, $url_long){
  // 参数检查
  if(empty($source) || !$url_long){<br>    return false;
  }  // 参数处理,字符串转为数组
  if(!is_array($url_long)){<br>    $url_long = array($url_long);
  }  // 拼接url_long参数请求格式
  $url_param = array_map(function($value){
    return '&url_long='.urlencode($value);
  }, $url_long);<br>  $url_param = implode('', $url_param);
  // 新浪生成短链接接口
  $api = 'http://api.t.sina.com.cn/short_url/shorten.json';  // 请求url
  $request_url = sprintf($api.'?source=%s%s', $source, $url_param);  <br>  $result = array();  // 执行请求
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $request_url);  <br>$data = curl_exec($ch);<br>  if($error=curl_errno($ch)){<br>  return false;
  }
  curl_close($ch);  $result = json_decode($data, true);  return $result;
}
//AppKey <br>$source = '您申请的AppKey';<br>// 单个链接转换
$url_long = 'https://3water.com/';<br>$data = getSinaShortUrl($source, $url_long);
print_r($data);<br>// 多个链接转换
$url_long = array('https://3water.com/','https://3water.com/','https://3water.com/');
$data = getSinaShortUrl($source, $url_long);
print_r($data);
?>

输出:

Array(
    [0] => Array
        (
            [url_short] => http://t.cn/RBclsRo
            [url_long] => https://3water.com/
            [type] => 0
        )
)Array(
    [0] => Array
        (
            [url_short] => http://t.cn/RBclsRo
            [url_long] => https://3water.com/
            [type] => 0
        )
    [1] => Array
        (
            [url_short] => http://t.cn/RBclsRo
            [url_long] => https://3water.com/
            [type] => 0
        )
    [2] => Array
        (
            [url_short] => http://t.cn/RBclsRo
            [url_long] => https://3water.com/
            [type] => 0
        )
)

经测试,这个生成接口还是比较稳定的!

PHP 相关文章推荐
php中截取字符串支持utf-8
Jan 18 PHP
PHP常用函数小技巧
Sep 11 PHP
PHP中基本符号及使用方法
Mar 23 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
golang与PHP输出excel示例
Jul 22 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
PHP调用全国天气预报数据接口查询天气示例
Feb 20 #PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 #PHP
php原生数据库分页的代码实例
Feb 18 #PHP
PHP实现文字写入图片功能
Feb 18 #PHP
php分享朋友圈的实现代码
Feb 18 #PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 #PHP
php实现微信分享朋友链接功能
Feb 18 #PHP
You might like
php使用数组填充下拉列表框的方法
2015/03/31 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
微信小程序 toast 详解及实例代码
2016/11/09 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python操作redis实例小结【String、Hash、List、Set等】
2019/05/16 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python数据化运营的重要意义
2019/11/25 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
Django实现随机图形验证码的示例
2020/10/15 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
暑期实践思想汇报
2014/01/06 职场文书
列车长先进事迹材料
2014/01/25 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
单位接收函范文
2015/01/30 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书