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 相关文章推荐
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
php长字符串定义方法
Jul 12 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php随机输出名人名言的代码
2012/10/07 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
PDO::errorInfo讲解
2019/01/28 PHP
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jquery实现动态画圆
2014/12/04 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
python实现多进程通信实例分析
2019/09/01 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
一套VC试题
2015/01/23 面试题
秘书岗位职责
2013/11/18 职场文书
信息管理员岗位职责
2013/12/01 职场文书
会计岗位职责范本
2014/03/07 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
党员个人对照检查材料
2014/10/01 职场文书
党员承诺书范文2015
2015/04/27 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
MySQL获取所有分类的前N条记录
2021/05/07 MySQL
mysql left join快速转inner join的过程
2021/06/30 MySQL