PHPで楽天トラベルキーワード検索APIを使う時の注意点とサンプル

スポンサーリンク

個人的に思いついたアイデアを形にしようと思い、楽天トラベルの「楽天トラベルキーワード検索API」を使っています。

PHPで作ろうと思ったのですが、すんなり出来なくて30分ほどハマってしまったので、なんでハマってしまったのか、どうやって問題を解決できたのかをシェアします。

サンプルコード

早速ですが、動作したサンプルコードを紹介します。PHPで動きます。

$api_url = "http://api.rakuten.co.jp/rws/3.0/rest?developerId=[your ID]&affiliateId=[your affiliateId]&operation=KeywordHotelSearch&version=2009-10-20&keyword=〜〜〜";

$data = file_get_contents($api_url);
$data = str_replace('KeywordHotelSearch:KeywordHotelSearch', 'KeywordHotelSearch', $data);
$r_travel = simplexml_load_string($data);

foreach($r_travel->Body->KeywordHotelSearch->hotel as $hotel){
	echo $hotel->hotelBasicInfo->hotelName;
}

一見普通な感じですが、ちょっと一手間加えているのがポイントです。

ハマった原因は、PHPでコロンがパースできないから

注目していただきたいのは、str_replaceで「KeywordHotelSearch:KeywordHotelSearch」を「KeywordHotelSearch」に置き換えているところです。

置き換える前の文字列には、半角のコロン(:)が入っています。これが入っていると、せっかく取得したデータを使うことができません。

コロン1つのせいでやりたいことができなくなってしまうので、simplexml_load_string関数でデータを取得しに行く前にコロンがないような形に置き換えています。

たったこれだけのことなのですが、なんで思い通りに出てこないのか分からず、しばらく悩みました。

解決策のヒントになったのは「楽天商品検索API サンプルコード」というページです。どうやら、楽天系のAPIはコロンが厄介で、コロンがない状態にしないとPHPで取り込めないような感じですね。

もし、楽天系のAPIを使う方はこの点注意して使うようにしてください。