[み]楽天APIで、PHPのsimplexml_load_stringを使う時は、コロンに要注意

またしても、みはら(@masashi_385)のメモ用記事です。ほとんどの方にはまったく興味もわかないような内容です。でも、Google先生に導かれてここにいらっしゃった方には、とても「いいね!」って気分になると思います。みはらがそうでしたから。

例えば、こんな風にすると思います。

$url = 'http://api.rakuten.co.jp/rws/3.0/rest?...............;
$data = file_get_contents($url);
$xml = simplexml_load_string($data);

これで、中身を確認すると、空っぽです。何が原因かというと、返ってきたものの中に楽天トラベルのAPIであれば、<SimpleHotelSearch&#058SimpleHotelSearch>っていうのがあって、この中のコロンがよろしくないとのことなんです。なので、こんな風にしてコロンを無くしてやるとうまくいきます。

$url = 'http://api.rakuten.co.jp/rws/3.0/rest?...............;
$data = file_get_contents($url);
$data = str_replace('
SimpleHotelSearch:SimpleHotelSearch', 'SimpleHotelSearch', $data);
$xml = simplexml_load_string($data);

で、楽天の商品検索APIだったら、こうです。

$data = str_replace('itemSearch:ItemSearch', 'ItemSearch', $data);

要は、返ってきているもののなかにコロンがいたら、うまくパースできないってことみたいなので、コロンがついてるヤツがあれば、置き換えてやればいいってことだそうです。

ちなみに、こんなのもあります。

$url = 'http://api.rakuten.co.jp/rws/3.0/rest?...............;
$data = preg_replace('
/:/','_',file_get_contents($url));
$xml = simplexml_load_string($data);

コロンを最初に全部置き換えてしまう方法です。PHPってなんかいろんなやり方があるんですね。といっても、Google先生に聞いてるだけなので、知識が断片的すぎるんですよね。だから、ものすごく基本的なこととか、ほとんどわかってません… 最終的に形をつくれているから、まぁいいかなと思うことにしています。きっと、そのうち点が線になっていずれ3Dになるんじゃないかと願っています。

シェアありがとうございます

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

commentYour Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

checkboxみはら.comはエックスサーバーです

editNEW エントリー

PAGE TOP arrowup