
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 );



