设为首页 收藏本站
查看: 995|回复: 0

[经验分享] PHP调用t.cn新浪短网址服务API(JSON版)

[复制链接]

尚未签到

发表于 2017-4-13 11:47:46 | 显示全部楼层 |阅读模式
没什么好讲了,重要的地方我都在代码中注释了,主要是APP_KEY,这个需要你自己去新浪的开放平台申请,地址:http://open.t.sina.com.cn/ 。注册后随便添加个app就可以得到key了(在没有APP_KEY的情况下你也可以通过oAuth认证方式实现)。
 
下面是PHP的调用代码:
 
1<?php

2//Sina App_Key

3define('SINA_APPKEY', '你的App_Key');

4 

5function curlQuery($url) {

6    //设置附加HTTP头

7    $addHead = array(

8        "Content-type: application/json"

9    );

10 

11    //初始化curl,当然,你也可以用fsockopen代替

12    $curl_obj = curl_init();

13 

14    //设置网址

15    curl_setopt($curl_obj, CURLOPT_URL, $url);

16 

17    //附加Head内容

18    curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);

19 

20    //是否输出返回头信息

21    curl_setopt($curl_obj, CURLOPT_HEADER, 0);

22 

23    //将curl_exec的结果返回

24    curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);

25 

26    //设置超时时间

27    curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);

28 

29    //执行

30    $result = curl_exec($curl_obj);

31 

32    //关闭curl回话

33    curl_close($curl_obj);

34 

35    return $result;

36}

37 

38//简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误

39function filterUrl($url = '') {

40    $url = trim(strtolower($url));

41    $url = trim(preg_replace('/^http:\/\//', '', $url));

42    if ($url == '')

43        return false;

44    else

45        return urlencode('http://' . $url);

46}

47 

48//根据长网址获取短网址

49function sinaShortenUrl($long_url) {

50    //拼接请求地址,此地址你可以在官方的文档中查看到

51    $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY .'&url_long=' . $long_url;

52 

53    //获取请求结果

54    $result = curlQuery($url);

55 

56    //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西

57    //print_r($result);exit();

58 

59    //解析json

60    $json = json_decode($result);

61 

62    //异常情况返回false

63    if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short =='')

64        return false;

65    else

66        return $json[0]->url_short;

67}

68 

69//根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数

70function sinaExpandUrl($short_url) {

71    //拼接请求地址,此地址你可以在官方的文档中查看到

72    $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY .'&url_short=' . $short_url;

73 

74    //获取请求结果

75    $result = curlQuery($url);

76 

77    //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西

78    //print_r($result);exit();

79 

80    //解析json

81    $json = json_decode($result);

82 

83    //异常情况返回false

84    if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long =='')

85        return false;

86    else

87        return $json[0]->url_long;

88}

89 

90//要缩短的网址

91$url = 'http://www.xingdonghai.cn';

92 

93$url = filterUrl($url);

94$short = sinaShortenUrl($url);

95$ulong = sinaExpandUrl($short);

96echo "源网址:{$ulong}<br />短网址:{$short}";

97?>



 
 
最后附官方API文档地址:
 
关于短网址的一些API:http://t.cn/hd5b1z
shorten:http://t.cn/hd5GxC
expand:http://t.cn/hd5Gl3
 
http://www.xingdonghai.cn/php-sina-short-url-api-json/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364446-1-1.html 上篇帖子: Java Script与PHP配合实现智能化的搜索界面 下篇帖子: 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表