bit.ly 是一個很多人使用的短網址網站,如果要接他的 API 到你的網站的話也很簡單。但是如果連同樣的網址都要呼叫 API ,那對你網站的 loading 就重了!
以下的程式不是僅僅呼叫而已,還包括把呼叫完的資料存起來,遇到相同網址時就直接使用 cache 的即可。
define('SHORTEN_URL', 'http://api.bit.ly/v3/shorten'); define('LOGIN_ID','your login id'); define('APIKEY','your API key'); define('CACHE_DIR','cache/shorten/'); // cache path class ShortenerUtilHelper { static function MakeApiCall($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); if( ! $result = curl_exec($ch)) echo "curl_error : " . curl_error($ch); else return $result; } static function GetSortener($url) { $url = urlencode($url); $apiurl = SHORTEN_URL . "?login=" . LOGIN_ID . "&apiKey=" . APIKEY . "&longUrl=$url&format=txt"; // make cache $md5 = md5($url); $cache_file = CACHE_DIR . "$md5.php"; if(file_exists($cache_file)) return file_get_contents($cache_file); } else { @mkdir(CACHE_DIR,0777); $shorturl = ShortenerUtilHelper::MakeApiCall($apiurl); $fp = fopen($cache_file, 'w'); fwrite($fp, $shorturl); fclose($fp); return $shorturl; } } }
使用時直接呼叫即可。例:
$url = "http://www.snippetinfo.net"; $shorten_url = ShortenerUtilHelper::GetSortener ( $url );