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をググる



タグクラウド


最近のエントリ

カレンダー

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930

分類別

保管庫


購読

marker

Firefox meter

CC LICENSE


since 2001-09-25

Powered by WordPress