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实现Socket服务器的代码
Apr 03 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
php 短链接算法收集与分析
Dec 30 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
php读取csc文件并输出
May 21 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
PHP中递归的实现实例详解
Nov 14 PHP
php实现在线考试系统【附源码】
Sep 18 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
生成卡号php代码
2008/04/09 PHP
MySql中正则表达式的使用方法描述
2008/07/30 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
关于php循环跳出的问题
2013/07/01 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
小学生常见病防治方案
2014/06/06 职场文书
学校三节实施方案
2014/06/09 职场文书
青奥会口号
2014/06/12 职场文书
法制宣传口号
2014/06/16 职场文书
慰问信格式
2015/02/14 职场文书
综合办公室岗位职责
2015/04/11 职场文书
健康教育主题班会
2015/08/14 职场文书
妇产科护理心得体会
2016/01/22 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
详解运行Python的神器Jupyter Notebook
2021/06/03 Python