您的位置 首页 php

利用API实现短网址

5203467cecba46d6a928e7a551846d4c

78ab6b7bc605427bbeb79cc36dec5238

新浪提供了长链接转为短链接的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 需要转换的长链接,需要 urlencode d,最多不超过20个。

多个url参数需要使用如下方式请求:url_long=aaa&url_long=bbb

创建source方法

1.进入 ,选择菜单 微连接->网站接入。2.点击立即接入,创建新应用,填写应用名称,点击创建。3.创建成功后,AppKey就是source参数的值,可以用于请求创建短链接。

这里是测试代码
   <?php  
$api = ' ; // json
// $api = ' // xml
$source = ' 您申请的 AppKey' ;
$url_long = ' ;
$request_url = sprintf($api. '?source=%s&url_long=%s' , $source, $url_long);
$data = file_get_contents($request_url);
echo $data;
?>

返回JSON格式
 [ 
{
"url_short" : "" ,
"url_long" : "" ,
"type" : 0
}
]
返回XML格式
  <?xml version="1.0" encoding="UTF-8"?>  
< urls >
< url >
< url_short > </ url_short >
< url_long > </ url_long >
< type > 0 </ type >
</ url >
</ urls >

生成的短链接为 ,访问会跳转到 9481675a43824ca88bfef301063d1a67

完整的类如下:

  /* 
* 生成新浪的短链接或还原新浪短链接
*/

class ShortUrl {
// 新浪 APPKEY
const APPKEY= 'xxxxxxxx' ; // 你申请的 appkey
//CURL
private static function CURLQueryString ($url) {
// 设置附加 HTTP
$addHead= array ( "Content-type: application/json" );
// 初始化 curl
$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, 8 );
// 执行
$result=curl_exec($curl_obj);
// 关闭 curl 回话
curl_close($curl_obj);
return $result;
}
// 处理返回结果
private static function doWithResult ($result,$field) {
$result=json_decode($result, true );
return isset ($result[ 0 ][$field])?$result[ 0 ][$field]: '' ;
}
// 获取短链接
public static function getShort ($url) {
$url= ' . self ::APPKEY. '&url_long=' .$url;
$result= self ::CURLQueryString($url);
return self ::doWithResult($result, 'url_short' );
}
// 获取长链接
public static function getLong ($url) {
$url= ' . self ::APPKEY. '&url_short=' .$url;
$result= self ::CURLQueryString($url);
return self ::doWithResult($result, 'url_long' );
}
}

你也可以用以下完整的方法

   <?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 = ' ;

// 请求 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 = 'xxxxxxxssssss' ;
// 单个链接转换
$url_long = ' ;
$data = getSinaShortUrl($source, $url_long);
print_r($data);

// 多个链接转换
$url_longs = array (
' ,
' ,
' ,
' ,
' ,
);
$data_arr = getSinaShortUrl($source, $url_longs);
print_r($data_arr);
?>

以上是文章全部内容

19e4d7d35bbe4eb5bb7a252785d91f38

文章来源:智云一二三科技

文章标题:利用API实现短网址

文章地址:https://www.zhihuclub.com/30194.shtml

关于作者: 智云科技

热门文章

网站地图