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 字符串操作入门教程
Dec 06 PHP
php+mysql分页代码详解
Mar 27 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php对称加密算法示例
May 07 PHP
php中error与exception的区别及应用
Jul 28 PHP
php更新mysql后获取改变行数的方法
Dec 25 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 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小教程之实现双向链表
2014/06/12 PHP
php常量详细解析
2015/10/27 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JS+CSS实现电子商务网站导航模板效果代码
2015/09/10 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
2017/06/07 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python pandas用法最全整理
2019/08/04 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
综合测评自我鉴定
2013/10/08 职场文书
行政人员岗位职责
2013/12/08 职场文书
安全生产大检查方案
2014/05/07 职场文书
销售口号大全
2014/06/11 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
结婚老公保证书
2015/02/26 职场文书
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技