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相关资料
Oct 09 PHP
让你同时上传 1000 个文件 (二)
Oct 09 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
ThinkPHP模板判断输出Empty标签用法详解
Jun 30 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
javascript some()函数用法详解
Nov 13 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
express启用https使用小记
2019/05/21 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python中endswith()函数的基本使用
2015/04/07 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
python logging通过json文件配置的步骤
2020/04/27 Python
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
业务总经理岗位职责
2014/02/03 职场文书
个性发展自我评价
2014/02/11 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
2015年行政部工作总结
2015/04/28 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
单身证明范本
2015/06/15 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
交流会主持词
2015/07/02 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript