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(8) php 数组
Mar 05 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 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
JAVA/JSP学习系列之四
2006/10/09 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
PHP实现添加购物车功能
2017/03/06 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
原生js二级联动效果
2017/06/20 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
python发腾讯微博代码分享
2014/01/10 Python
python关闭windows进程的方法
2015/04/18 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python读取图片任意范围区域
2019/01/23 Python
python IP地址转整数
2020/11/20 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
linux面试题参考答案(9)
2015/01/07 面试题
求职自荐信
2013/12/14 职场文书
机械个人求职信范文
2014/01/24 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
催款函范本大全
2015/06/24 职场文书
领导干部学习三严三实心得体会
2016/01/05 职场文书
python使用glob检索文件的操作
2021/05/20 Python