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 相关文章推荐
Smarty+QUICKFORM小小演示
Feb 25 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP警告Cannot use a scalar value as an array的解决方法
Jan 11 PHP
php生成略缩图代码
Jul 16 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
Mar 30 PHP
php中array_fill函数的实例用法
Mar 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
如何获得PHP相关资料
2006/10/09 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP引用的调用方法分析
2016/04/25 PHP
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
js实现蒙版效果
2020/01/11 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
Django Rest framework权限的详细用法
2019/07/25 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
django自带的权限管理Permission用法说明
2020/05/13 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
酒店前台接待岗位职责
2013/12/03 职场文书
设计顾问服务计划书
2014/05/04 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
消防验收申请报告
2015/05/15 职场文书
小学大队委竞选口号
2015/12/25 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
深入理解Pytorch微调torchvision模型
2021/11/11 Python