<?php //Sina App_Key define('SINA_APPKEY', '31641035'); 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; else return 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); //下面這行注釋用於調試,你可以把注釋去掉看看從sina返回的資訊是什麼東西 //print_r($result);exit(); //解析json $json = json_decode($result); //異常情況返回false if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '') return false; else return $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); //下面這行注釋用於調試,你可以把注釋去掉看看從sina返回的資訊是什麼東西 //print_r($result);exit(); //解析json $json = json_decode($result); //異常情況返回false if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '') return false; else return $json[0]->url_long; } //要縮短的網址 $url = $long; //這裡自己看著辦,修改成你要縮短的網址還是擷取post的資料還是怎麼滴。 $url = filterUrl($url); $short = sinaShortenUrl($url); $ulong = sinaExpandUrl($short); ?> |