PHP调用新浪API 生成短链接

我们经常收到类似于这样的短信(如下图),发现其中的链接并不是常规的网址链接,而是个短小精悍的短链接,产品中经常需要这样的需求,如果在给用户下发的短信中是一个很长的连接,用户体验肯定很差,因此我们需要实现长链接转换成短链接:

新浪提供了一个长短连接转换的API,我们可以使用它:具体实现:(新浪官方接口API:http://open.weibo.com/wiki/微博API)

<?php
/Sina App_Key
define('SINA_APPKEY', '网站申请的key');
function curlQuery($url) {//设置附加HTTP头$addHead = array("Content-type: application/json");//初始化curl,当然,你也可以用fsockopen代替$curl_obj = curl_init();//设置网址curl_setopt($curl_obj, CURLOPT_URL, $url);//附加Head内容curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);//是否输出返回头信息curl_setopt($curl_obj, CURLOPT_HEADER, 0);//将curl_exec的结果返回curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);//设置超时时间curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);//执行$result = curl_exec($curl_obj);//关闭curl回话curl_close($curl_obj);return $result;
}
//简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误
function filterUrl($url = '') {$url = trim(strtolower($url));$url = trim(preg_replace('/^http:\//', '', $url));if ($url == '')return false;elsereturn urlencode('http://' . $url);
}
//根据长网址获取短网址
function sinaShortenUrl($long_url) {//拼接请求地址,此地址你可以在官方的文档中查看到$url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY . '&url_long=' . $long_url;//获取请求结果$result = curlQuery($url);//下面这行注释用于调试,//print_r($result);exit();//解析json$json = json_decode($result);//异常情况返回falseif (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '')return false;elsereturn $json[0]->url_short;
}
//根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数
function sinaExpandUrl($short_url) {//拼接请求地址,此地址你可以在官方的文档中查看到$url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY . '&url_short=' . $short_url;//获取请求结果$result = curlQuery($url);//下面这行注释用于调试//print_r($result);exit();//解析json$json = json_decode($result);//异常情况返回falseif (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '')return false;elsereturn $json[0]->url_long;
}
//要缩短的网址
$url = "cccc.com/a/index.php?a=1211"; //这里自己看着办,修改成你要缩短的网址还是获取post的数据还是怎么滴。
$url = filterUrl($url);  //对URL进行简单处理的方法
echo $short = sinaShortenUrl($url);      //根据传入的长网址生产短网址
echo "</br>";
echo $ulong = sinaExpandUrl($short);
?>

3271760578

 

转载于:https://www.cnblogs.com/nuanxin/p/10083739.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome如何下载网页视频

目录第一步&#xff1a;右键&#xff0c;选择「检查」指令&#xff0c;进入代码控制面板第二步&#xff1a;单击代码面板左上角红色标出来的按钮&#xff0c;然后鼠标移到左边视频上第三步&#xff1a;双击src后面的代码&#xff08;全部展开&#xff09;&#xff0c;复制粘贴到…

使用MUTT步骤

使用MUTT&#xff0c;以下是步骤&#xff1a;1.1、首先确认一下MUTT是被已经安装 [oracledevdb02 ]$ rpm -aq | grep muttmutt-1.4.1-11.rhel41.2、检查系统是否安装中文字符集 [oracledevdb02 ]$ locale -a | grep zh_CNzh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.u…

html iso标准文档,HTML ISO-8859-1 参考手册

HTML ISO-8859-1 参考手册ISO(全称 International Standards Organization)为不同的字母/语言定义了标准的字符集。在 HTML 4.01 中&#xff0c;ISO-8859-1 是默认的字符。现代的浏览器支持的字符集&#xff1a;ISO-8859-1ISO-8859-1 是大多数浏览器默认的字符集。ISO-8859-1 的…

单链表反转

参考&#xff1a;【图文解析】反转一个单链表 作者&#xff1a;giturtle 发布时间&#xff1a; 2019-03-18 15:26:38 网址&#xff1a;https://blog.csdn.net/qq_42351880/article/details/88637387?spm1001.2014.3001.5501 目录例题描述思路代码实现例题描述 反转一个链表 …

Unity优化总览

CPU GC 序列化与反序列化,如protobuff,json解析String的频繁构造,拼接,如ToString()会生成字符串,Object.name会返回拷贝闭包和匿名函数,在闭包中调用外部变量时会创建临时class对象,匿名函数当做参数传入时,也会有内存开销有开销的函数,如Camera.main等,缓存一下Transform只存…

Rake的使用

Rake 是一套类似 Make 的 Builder 工具&#xff0c;让我们可以编写一些脚本任务&#xff0c;并且很方便设定各任务的相依性。在 Rails 之中就內建了许多 rake 指令&#xff0c;除了你已经使用过的 rake db:migrate 之外&#xff0c;还有例如&#xff1a;rake db:migrate rake d…

html5 usb调试,USB调试怎么打开 USB调试模式打不开怎么刷机

2016-04-25 16:58:28USB调试怎么打开 USB调试模式打不开怎么刷机标签&#xff1a;USB调试,刷机,recovery模式,卡刷【ROM之家】在手机很多应用使用时需要打开USB调试&#xff0c;比如连接电脑&#xff0c;刷机等操作。但有时候会遇上USB调试模式打不开&#xff0c;可能会选择刷机…

this 和super关键字

一、this 关键字 this关键字代表的就是函数所属的调用者。this关键字的作用&#xff1a; 1.如果存在同名的成员变量与局部变量时,在方法内部默认的时访问的时局部变量,可以通过this关键字调用成员变量 2.在一个构造方法中调用另一个构造方法来初始化对象this关键字要注意…

MODBUS通讯协议详解(基于485)

参考&#xff1a;灵育科技Modbus课程总结 作者&#xff1a;Naunyang 时间&#xff1a;2020-11-23 13:51:58 网址&#xff1a;https://blog.csdn.net/Naunyang/article/details/108740456?spm1001.2014.3001.5502 参考&#xff1a;MODBUS用于单片机通讯 作者&#xff1a;hillch…

C\C++与Java中的static关键字

C\C里面的static&#xff1a; 面向过程的static&#xff1a; 在c和c面向过程的设计里&#xff0c;在全局变量前加上static关键字则可将该变量定义为一个静态全局变量&#xff0c;比如&#xff1a; static int a; 那么c和c中的静态全局变量有什么特点呢&#xff1a; 1、 变…

步进电机、伺服电机、舵机、无刷电机、有刷电机区别

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

56、servlet3.0-与SpringMVC整合分析

56、servlet3.0-与SpringMVC整合分析 web容器在启动的时候&#xff0c;会扫描每个jar包下的META-INF/services/javax.servlet.ServletContainerInitializer加载这个文件指定的类SpringServletContainerInitializerspring的应用一启动会加载感兴趣的WebApplicationInitializer接…

html提交form预处理,HTML5 之图片上传预处理

在开发 H5 应用的时候碰到一个问题&#xff0c;应用只需要一张小的缩略图&#xff0c;而用户用手机上传的确是一张大图&#xff0c;手机摄像机拍的图片好几 M&#xff0c;这可要浪费很多流量。获取图片通过 File API 获取图片。var input document.createElement(input);input…

PID算法实现温控

参考&#xff1a;PID算法 作者&#xff1a;hillchina 发布时间&#xff1a; 2016-09-28 21:48:04 网址&#xff1a;https://www.bilibili.com/video/BV1Ds411t7Hr 以上完整的视频教程在腾讯课堂里有&#xff0c;在腾讯课堂里搜索PID&#xff0c;找到灵育科技&#xff0c;课程对…

React.js

类似于Jquery&#xff0c;主要是操作Dom 特点&#xff1a;1、基于组件开发 2、基于虚拟dom&#xff0c;速度快 用React的所需要引入的三个包&#xff1a; 1、react.min.js &#xff08;引入React语法&#xff09; 2、react-dom.min.js &#xff08;用react操作Dom&#xff09;…

[Unity3d]多个摄像机叠加效果

今天学习到一个多个摄像机看到的场景在同一个层显示&#xff0c;比如我们做一个类似反光镜的效果&#xff0c;当然反光镜可以直接用Shader来实现&#xff0c;但我就是了实现一个类比这样的一个效果&#xff0c;一个摄像机将看到的图像显示到一个Texture上&#xff0c;然后将Tex…

单片机程序跑飞原因

参考&#xff1a;单片机程序又跑飞&#xff1f; 作者&#xff1a;嵌入式ARM 网址&#xff1a;https://mp.weixin.qq.com/s/a22zVdSfCqWjSmlBxK2R1Q 目录数组越界/溢出中断服务程序缺失看门狗复位单片机中有看门狗&#xff0c;长时间不喂狗&#xff0c;程序就会复位。为什么长时…

html5大赛是什么,IE9开发大赛为HTML5打了一针兴奋剂

尽管HTML5是一种新的网页浏览标准&#xff0c;目前仅有苹果和微软的IE9支持该标准。客观地说&#xff0c;HTML5还是小众用户的标准。对于IE9来说&#xff0c;如果HTML5标准无法普及&#xff0c;IE9的硬件加速和性能优势就无从体现。加之Adobe一直力挺Flash&#xff0c;这对HTML…

apicloud手机查看效果

1.wifi全量同步 2.本地编译 需要在同一个WiFi中&#xff0c;WiFi全量同步&#xff0c;手机才会接受文件当代码改动时&#xff0c;需要本地编译后进行下载 如果是在海马模拟器上看效果&#xff0c;直接选择云编译自定义apploader-编译-下载apk文件-直接把apk文件拖进海马模拟器 …

Java关键字final使用详解

2019独角兽企业重金招聘Python工程师标准>>> http://docs.oracle.com/javase/tutorial/java/IandI/final.htmlWriting Final Classes and MethodsYou can declare some or all of a classs methods final. You use the final keyword in a method declaration to in…