為替レート取得用API(修正版)

October 9, 2010 – 6:51 pm

最近の為替変動はすごい。ついにUSドルが82円を切った。この勢いだと、75円程度まで円高になるという予測もまんざらという感じになってきた。こうなると、同じ製品が海外のAmazonサイトでいくらで手に入るのか知りたくなる。これを知るには、その時点々々の為替レート取得用APIとリンクするかたちで複数の国のAmazonサイトの価格を自動的に円換算してみる方法があると考えた。

とりあえず、為替レート取得用APIとして、以前に作成した「為替レート取得用API」(「Webページの公開情報を自動的に抽出・取得する」で一例として示したもの)を試してみた。ここで、情報源としていたReuterサイトの関連ページが少し変更されており、修正しなければならないことに気づいた。大急ぎで、修正版を作成したところだ。

このエントリーでは、修正版の「為替レート取得用API」(PHP関数)と簡単なサンプルのソース、加えて計算結果を示しておいた。

為替レート取得用API(PHP関数): 以下に、今回修正した為替レート取得用API(PHP関数)のソース、そしてサンプルのソースを与える:

get_currency.php:

<?php
function convert($from,$to){
    $url ="http://www.reuters.com/finance/currencies/quote?srcAmt=1.0&srcCurr=".$from."&destCurr=".$to;
    $ch  = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $feed = curl_exec($ch);
    curl_close($ch);

    $n = preg_match_all("/<input id=\"destAmt.*\" value=\"([^<]+)\"/", $feed, $cell, PREG_PATTERN_ORDER);
    return $cell[1][0];
}

// --------------------------------------
// Sample for checking function convert()
// --------------------------------------

$from = 'USD';
$to   = 'JPY';
$exchange_rate = convert( $from, $to );

echo "\nExchange Rate " . $from . "/" . $to . ": " ;
printf("%01.2f\n", convert($from, $to ) );
echo "Accessed Time        : " .  date('Y-m-d H:i:s') . "\n\n";
?>

このAPIの技術的な内容については、「Webページの公開情報を自動的に抽出・取得する」を参照して欲しい。

関数の出力: 上にしめしたAPIとサンプルのソース(get_currency.php)を動作させた際の出力を掲げる:

$ php get_currency.php

Exchange Rate USD/JPY: 82.42
Accessed Time        : 2010-10-07 17:37:27

この関数の使用に関るご注意: 「Webページの公開情報を自動的に抽出・取得する」に書いたように、この関数はReuterのサイトから得られる情報を加工したものだ。著作権とのかかわりで、こうしたかたちでこのReuterサイトの情報を活用することが許されるかどうか、良くわからないところがなくはない。この関数の使用にあたってはユーザー個々人の責任で行って欲しい。

また、この関数を短時間に反復的に使用すると、場合によっては、サイバーテロとみなされる事態になることがあるかもしれない。マナーを守って、使用されることをお願いする。

確かなこととは言えないが、この関数を短時間に繰り返し使用すると、戻される値が変化しないことがある。おそらく、Reutersサイトのサイバーテロなどへの対応を反映しているのかもしれない。


  1. 2 Responses to “為替レート取得用API(修正版)”

  2. 始めまして。
    為替情報の取得をやってみたところ

    Exchange Rate USD/JPY: 0.00 Accessed Time : 2017-11-23 00:12:13

    レートが0.00と取得できず、もし可能でしたら原因を教えていただけますでしょうか?

    By のなか on Nov 23, 2017

  3. のなか さま

    function convert() の最初の行で

       http を https に変更してください。

    http://www.reuters.com が SSL化されてます。

    なお、この関数の使用に関しましては自己責任にてお願いします。

    愛読感謝

    By yama on Nov 24, 2017

Post a Comment