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无限分类的类
Jan 02 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
Nov 25 PHP
PHP rawurlencode与urlencode函数的深入分析
Jun 08 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
php实现网站留言板功能
Nov 04 PHP
php语言的7种基本的排序方法
Dec 28 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
php文件操作之文件写入字符串、数组的方法分析
Apr 15 PHP
Laravel关系模型指定条件查询方法
Oct 10 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
Admin generator, filters and I18n
2011/10/06 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php之Memcache学习笔记
2013/06/17 PHP
smarty中post用法实例
2014/11/28 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
jquery animate图片模向滑动示例代码
2011/01/26 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
python脚本监控docker容器
2016/04/27 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
使用Python对Csv文件操作实例代码
2017/05/12 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
总经理助理的职责
2014/03/14 职场文书
销售活动策划方案
2014/08/26 职场文书
服装区域经理岗位职责
2015/04/10 职场文书
中标通知书
2015/04/17 职场文书