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-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
php学习之数据类型之间的转换代码
May 29 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
php使用curl存储cookie的示例
Mar 31 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
CI框架学习笔记(二) -入口文件index.php
Oct 27 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
PHP开发中常用的十个代码样例
Feb 02 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
phpquery中文手册
Mar 18 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
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
DOM精简教程
2006/10/03 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
浅析Ajax语法
2016/12/05 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
从零学习node.js之express入门(六)
2017/02/25 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
Python将多个excel文件合并为一个文件
2018/01/03 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
Python configparser模块操作代码实例
2020/06/08 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
建筑工程专业大学生求职信
2014/04/23 职场文书
幼儿园课题实施方案
2014/05/14 职场文书
计划生育工作总结2015
2015/04/03 职场文书
运动会加油稿
2015/07/22 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
导游词之唐山景点
2019/12/18 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
sql注入教程之类型以及提交注入
2021/08/02 MySQL
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库