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生成自己的LOG文件
Oct 09 PHP
综合图片计数器
Oct 09 PHP
PHP编码规范的深入探讨
Jun 06 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
Aug 21 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 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
Cakephp 执行主要流程
2010/03/24 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
yii操作cookie实例简介
2014/07/09 PHP
PHP6新特性分析
2016/03/03 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript 基本概念
2015/01/20 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
python字典的常用操作方法小结
2016/05/16 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
python interpolate插值实例
2020/07/06 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
数学专业推荐信范文
2013/11/21 职场文书
英语道歉信范文
2014/01/09 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
人事主管岗位职责
2015/02/04 职场文书
爱心捐款活动总结
2015/05/09 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
导游带团欢迎词
2015/09/30 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书