モノノフ日記

普通の日記です

Googleから為替レートをJSONで取得する方法

仕事で為替レートを扱う必要があったのでちょっと調べてみました。
海外にあるAPIは有料だったり、Yahooファイナンスからゴニョゴニョするのもコード見たらめんどくさそうだ・・・とか思ってたらGoogle先生にステキなAPIを見つけました。

http://www.google.com/ig/calculator?hl=ja&q=変換前の通貨=?変換後の通貨
// 1アメリカドル を日本円に
http://www.google.com/ig/calculator?hl=ja&q=1USD=?JPY

PHPで書くとこんな感じで使えます。APIレスポンスのままだとjson_decode()が文字列のパースに失敗してたのでkey値を「"」で囲ってます(ダサイ・・)。

<?php
$data = file_get_contents('http://www.google.com/ig/calculator?hl=en&q=1USD=?JPY');
$data = str_replace(array('lhs', 'rhs', 'error', 'icc'), array('"lhs"', '"rhs"', '"error"', '"icc"'), $data);

$json = json_decode($data, true);
$yen  = preg_replace("/[^0-9.]+/", '', $json['rhs']);
var_dump($yen);

ファイナンスサイトから頑張ってゴニョゴニョするよりも楽なのでオススメです。

追記

ブコメでid:reasonofreasonから「ダブルクオーテーションで囲まれてないから囲む必要があるということなのだろうか。」というコメントをもらったので補足しておきます。json_decodeはJSON記法を厳密にチェックするのでkey値もクォーテーションで囲んでないとパースしてくれないのです。型チェックは甘いくせにこういう所は厳密だったりするPHPなのでした。

参考リンク