当前位置:首页 > PHP教程 > php高级应用 > 列表

php实现新浪短链接调用API代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-26 11:09:23 浏览: 评论:0 

前面写过了一篇文章是图片反盗链的,我自己弄得单独的页面就采用了sina的短连接,对于短连接来说还是方便的,地址太长占地方,下面分享源码,有注释,非原创,代码如下:

  1. <?php 
  2. //Sina App_Key 
  3. define('SINA_APPKEY', '31641035'); 
  4.  
  5. function 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://)开头的和不规范的地址会返回错误 
  39. function 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. //根据长网址获取短网址 
  49. function 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中的代码,以方便你阅读对比,你可以自行合并两个函数 
  70. function 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. }//开源代码phpfensi.com 
  89.  
  90. //要缩短的网址 
  91. $url = $long; //这里自己看着办,修改成你要缩短的网址还是获取post的数据还是怎么滴。 
  92.  
  93. $url = filterUrl($url); 
  94. $short = sinaShortenUrl($url); 
  95. $ulong = sinaExpandUrl($short); 
  96. ?> 

本文中短连接已经附带的一个appkey不用再自己申请KEY当然你如果需要使用你自己的您也可以自己去替换,至于用法就看你了,镶入到其他程序使用啊?单独做个生成短连接的页面都不管我的事啊,使用方法不多说,最近比较懒.

Tags: php新浪短链接 php调用API代码

分享到: