個人的に思いついたアイデアを形にしようと思い、楽天トラベルの「楽天トラベルキーワード検索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を使う方はこの点注意して使うようにしてください。
タグ:API, PHP