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://www.cnblogs.com/daxiangxm/';
$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/Rki0twp</url_short>
<url_long>https://www.cnblogs.com/daxiangxm/</url_long>
<type>0</type>
</url></urls>
生成的短链接为 http://t.cn/Rki0twp ,访问会跳转到 https://www.cnblogs.com/daxiangxm/
完整调用方法如下:
<?php/**
* 调用新浪接口将长链接转为短链接
* @param string $source 申请应用的AppKey
* @param array|string $url_long 长链接,支持多个转换(需要先执行urlencode)
* @return array
*/function getSinaShortUrl($source, $url_long){ // 参数检查
if(empty($source) || !$url_long){
return false;
} // 参数处理,字符串转为数组
if(!is_array($url_long)){
$url_long = array($url_long);
} // 拼接url_long参数请求格式
$url_param = array_map(function($value){
return '&url_long='.urlencode($value);
}, $url_long);
$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);
$result = array(); // 执行请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $request_url);
$data = curl_exec($ch);
if($error=curl_errno($ch)){
return false;
}
curl_close($ch); $result = json_decode($data, true); return $result; }
//AppKey
$source = '您申请的AppKey';
// 单个链接转换
$url_long = 'https://www.cnblogs.com/daxiangxm/';
$data = getSinaShortUrl($source, $url_long);
print_r($data);
// 多个链接转换
$url_long = array('https://www.cnblogs.com/daxiangxm/','https://www.cnblogs.com/daxiangxm/','https://www.cnblogs.com/daxiangxm/');
$data = getSinaShortUrl($source, $url_long);
print_r($data);
?>
输出:
Array(
[0] => Array
(
[url_short] => http://t.cn/Rki0twp
[url_long] => https://www.cnblogs.com/daxiangxm/
[type] => 0
) )Array(
[0] => Array
(
[url_short] => http://t.cn/Rki0twp
[url_long] => https://www.cnblogs.com/daxiangxm/
[type] => 0
) [1] => Array
(
[url_short] => http://t.cn/Rki0twp
[url_long] => https://www.cnblogs.com/daxiangxm/
[type] => 0
) [2] => Array
(
[url_short] => http://t.cn/Rki0twp
[url_long] => https://www.cnblogs.com/daxiangxm/
[type] => 0
) )
经测试,这个生成接口还是比较稳定的!
php调用新浪API生成t.cn短网址链接的更多相关文章
- PHP调用新浪API 生成短链接
		我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实 ... 
- Python如何调用新浪api接口的问题
		前言:这些天在研究如何调用新浪开放平台的api分析新浪微博用户的数据 成果:成功调用了新浪api获取了用户的一些个人信息和无数条公共微博 不足:新浪开放平台访问有限制,返回的数据着实有限,不足以分析问 ... 
- 使用JAVA实现模拟登陆并发送新浪微博(非调用新浪API)
		没有调用新浪的API,在程序中加入自己的帐号和密码就能发送微博,代码完全在后台运行,不用打开浏览器. 用了HtmlUnit这个库来模拟登录还有发送微博. 先上效果图: 这个是刚登陆上获取第一页的信息. ... 
- 使用新浪API生成短连接
		公司最近需要进行短信推广,需要发送大批量带有连接地址的短信给用户,并且需要统计短信的点击量.因为需要考虑短信成本问题,需要将长连接地址生成比较短的连接.因为公司本身没有短的一级域名,所以考虑到使用第三 ... 
- 淘宝(新浪)API获取IP地址位置信息
		package com.parse; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IO ... 
- 调用新浪短地址转换api的一个测试
		import base64 import requests url="http://www.~~~~.com" headers={ "User-Agent":& ... 
- java调用新浪接口根据Ip查询所属地区
		import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import ... 
- 新浪API及调用案例
		百度分享:http://pan.baidu.com/s/1uSmku 
- 【多端应用开发系列1.1.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述
		[前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ... 
随机推荐
- Alibaba Nacos 学习(五):K8S Nacos搭建,使用nfs
			Alibaba Nacos 学习(一):Nacos介绍与安装 Alibaba Nacos 学习(二):Spring Cloud Nacos Config Alibaba Nacos 学习(三):Spr ... 
- GeoServer 查询sql视图
			说明: 最近项目中遇到一个需求,需要统计管网的长度,但管网数据量非常大,前端用openlayers接口统计直接就奔溃了. 后尝试使用调后台接口查数据库的方式,虽然可行但是又要多一层与后台交互的工作. ... 
- Vue过渡动画运用transition
			vue的过渡动画,主要是transition标签的使用,配合css动画实现的.官方文档css过渡 通过点击事件来切换show的值来改变显示的文本,下面的css通过进入离开时的在匀速状态下xxs(秒)下 ... 
- vue  优化小技巧 之 require.context()
			1.require.context() 回忆一下 当我们引入组件时 第一步 创建一个子组件 第二步 import ... form ... 第三步 components:{..} 第四步 页面使用 & ... 
- Java程序在内存中运行详解
			目录 Java程序在内存中运行详解 一.JVM的内存分布 二.程序执行的过程 三.只有一个对象时的内存图 四.两个对象使用同一个方法的内存图 五.两个引用指向同一个对象的内存图 六.使用对象类型作为方 ... 
- 有效的减少代码中太多的if、else?-策略模式
			写这篇文章的目的和上一篇单例模式一样,策略模式也是一种常用的设计模式,太多的if-else不仅看着不太美观而且不好维护,对于自己来说也等于复习了一遍策略模式.先说一下策略 模式的定义: 策略模式封装了 ... 
- 【RN - 基础】之FlexBox弹性布局
			前言 弹性盒模型(The Flexible Box Module),又叫FlexBox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同的屏幕,为盒装模型提供最大的灵活 ... 
- 4k图片爬取+中文乱码
			4k图片爬取+中文乱码 此案例有三种乱码解决方法,推荐第一种 4k图片爬取其实和普通图片爬取的过程是没有本质区别的 import requests import os from lxml import ... 
- 《Windows内核安全与驱动开发》 4.4 线程与事件
			<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发> 4.4 线程与事件 一.开辟一个线程,参数为(打印内容+打印次数),利用线程 ... 
- k 近邻算法解决字体反爬手段|效果非常好
			字体反爬,是一种利用 CSS 特性和浏览器渲染规则实现的反爬虫手段.其高明之处在于,就算借助(Selenium 套件.Puppeteer 和 Splash)等渲染工具也无法拿到真实的文字内容. 这种反 ... 
