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 相关文章推荐
example2.php
Oct 09 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
PHP 可阅读随机字符串代码
May 26 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
php HTML无刷新提交表单
Apr 05 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
PHP异步进程助手async-helper
Feb 05 PHP
php异常处理捕获错误整理
Sep 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
在php和MySql中计算时间差的方法
2011/04/22 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
js constructor的实际作用分析
2011/11/15 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
Angular2库初探
2017/03/01 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python迭代器的使用方法实例
2013/11/21 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
2014新年元旦活动策划方案
2014/02/18 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
建议书范文
2015/02/05 职场文书
先进教师个人总结
2015/02/11 职场文书
初中思品教学反思
2016/02/20 职场文书
SQL SERVER存储过程用法详解
2022/02/24 SQL Server