IE6-8 is Not Supported

お天気情報 API Weather Hacks を PHP で使ってみた

Weather Hacks は Livedoor が提供する天気情報の API です。
たまたま使う機会があったので PHP での記述をメモっておきます。
今回は例として、「東京」の天気を取得しています。

1. 基本情報を取得する

foreach で回さなくても取得できる基本的な情報です。

<?php
	$url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
	$json = file_get_contents($url, true);
	$json = json_decode($json, true);

	// Pubric
	$title = $json['title'];													// 市区町村
	$description = $json['description']['text'];			// 詳細情報
	$publicTime = $json['publicTime'];								// 更新時間

	// Location
	$city = $json['location']['city'];								// 東京
	$area = $json['location']['area'];								// 関東
	$prefecture = $json['location']['prefecture'];		// 東京都
	$link = $json['link'];														// URL
?>

2. 今日・明日・明後日の天気を取得する

こちらは foreach で回します。気温は NULL が返ってくることがあるので、– に変換。

<?php
	foreach ($json['forecasts'] as $entry) {
		$dateLabel = $entry['dateLabel'];																// 今日・明日・明後日
		$telop = $entry['telop'];																				// 天気
		$date = $entry['date'];																					// 日付
		$min = $entry['temperature']['min'];														// 最低気温
		$max = $entry['temperature']['max'];														// 最高気温
		$mincelsius = $entry['temperature']['min']["celsius"];					// 摂氏
		$minfahrenheit = $entry['temperature']['min']["fahrenheit"];		// 華氏
		$maxcelsius = $entry['temperature']['max']["celsius"];					// 摂氏
		$maxfahrenheit = $entry['temperature']['max']["fahrenheit"];		// 華氏
		$image = $entry['image']["url"];																// アイコン

		// NULL
		if (!isset($min)) { $mincelsius = "--"; }
		if (!isset($max)) { $maxcelsius = "--"; }
		if (!isset($celsius)) { $min = "--"; }
		if (!isset($fahrenheit)) { $min = "--"; }
	}
?>

あとは使いたいものを echo なり print なりすれば表示されるはずです。
簡単な分取得できる情報は少なめ。あと商用不可みたいです。


補足: お天気アイコンを置換する

デフォルトのアイコンがださすぎるので Replace するゴリ押し技。
アイコンは 30 種類あるので、else if とアイコン番号をどんどん増やしていきます。
記述場所は foreach 内。め、めんどくさい…。

if ($image == "http://weather.livedoor.com/img/icon/1.gif") {
	$image = str_replace( "http://weather.livedoor.com/img/icon/1.gif", "./画像URL", $image);
}
else if ($image == "http://weather.livedoor.com/img/icon/2.gif") {
	$image = str_replace( "http://weather.livedoor.com/img/icon/2.gif", "./画像URL", $image);
} ...

以上になります。一応、デモページ も作ってみました。

ads by google