Skypeto: Skype chat to n-yoshi n-yoshi
Twitter: Follow laresjp on Twitter laresjp
feed: RSS 2.0 RSS or Atom Atom

PHP で短縮 URL を取得するコードを更新してみた

| go BLOG Top |

2011-02-24(木) 19:34(UTC +0900) p

たまに暴走させてしまったりしている 「日本の火山噴火状況通知ボット」 にて、今日もまたチョイとしたバグが…
今回は暴走ではないので皆様への被害は少なく済みましたけど、原因究明と対策には時間がかかってしまいました orz

不具合は
「通知呟きに付けている気象庁本家の詳細ページへの短縮 URL が付かなくなってた」
と云うモノ。
原因は、短縮処理に使用している bit.ly の API が更新され、今まで利用していたコードでは短縮 URL を取得できなくなってしまった、と云うコトでした。
原因と新しい json の構造が分かれば対策は簡単なのですが、他人様から戴いてきたコードをタダ改修するだけではナンなのでココに公開しておきます。

<?php

//要PHP5.2.xかjson_decode関数
function short_url($sLongURL,$sApiLogin,$sApiKey){
	//see http://code.google.com/p/bitly-api/wiki/ApiDocumentation
	$sUrl		= rawurlencode($sLongURL);

	$sRequestURL = "http://api.j.mp/v3/shorten?longUrl={$sUrl}&login={$sApiLogin}&apiKey={$sApiKey}";
	//print_r("
" . $sRequestURL . "
"); $jResult = file_get_contents($sRequestURL); $aResult = json_decode($jResult,TRUE); if($aResult['status_code']=="200"){ $aItem = $aResult['data']; return $aItem['url']; } else{ return $aResult['status_txt']; } } ?>
使い方
短くしたいURL
$sLongUrl = “http://example.com/”;
bit.lyのログイン名
$sLogin = “hoge”;
bit.lyのAPIキー
$sApiKey = “R_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;

使い方は元ネタと同じです。
内容的にはバージョン表記や戻り値の取り方を変えてますけど、呼び出し元のコードはそのままでいけるハズです。

おまけで、新しい json のサンプルも付けておきます。

{
	"status_code": 200, 
	"status_txt": "OK", 
	"data": {
		"long_url": "http://example.com/", 
		"url": "http://j.mp/gdiq4g ", 
		"hash": "gdiq4g", 
		"global_hash": "VDcn", 
		"new_hash": 0
	}
}

関連するかも知れない?


, Permalink, 関連つぶやき
cat: 電脳系
tag: , , , ,
0 Trackback

トラックバック

この記事のトラックバック URL


Twitter

Powered by Topsy

オススメ(殿堂)

ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード
ThinkPad Bluetooth ワイヤレス・トラックポイント・キーボード
ThinkPad
トラックポイント付きの無線キーボード

オススメ(amazon)

Twitter

オススメ(ニコ動)

オススメ(link)


検索

このblogをググる



タグクラウド


最近のエントリ

カレンダー

2017年6月
« 8月    
 123
45678910
11121314151617
18192021222324
252627282930  

分類別

保管庫


購読

marker

Firefox meter

CC LICENSE


since 2001-09-25

Powered by WordPress