人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5.25でYahoo!検索APIのデータ取得について

echo($url);
としたとき以下のパスが表示され

http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=******&query=%E3%81%82&start=1&results=10

これを直接アドレスバーから入力するとxml形式で検索結果が何件も返っています

しかしsimplexml_load_file()関数を通して

$xml = simplexml_load_file($url);
print_r($xml);
とすると

SimpleXMLElement Object ( [@attributes] => Array ( [totalResultsAvailable] => 0 [totalResultsReturned] => 0 [firstResultPosition] => 1 [pgr] => 0 ) )

と表示され、検索結果がゼロ件となり検索結果を取得できません
どこで間違っているのでしょうか…

●質問者: dedara
●カテゴリ:インターネット ウェブ制作
✍キーワード:API E3 ECHO object pgr
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ftns
●40ポイント ベストアンサー

一旦file_get_contents()でデータをダウンロードした後で、

simplexml_load_file()で変換したらどうなりますか?

http://jp.php.net/manual/ja/function.simplexml-load-string.php

◎質問者からの返答

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity " <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:jp:srch" xsi:schemaLocation="urn:yahoo:jp:srch http://api.search.yahoo.co.jp/WebSearchService/V1/WebSearchResponse.xsd" totalResultsAvailable="0" totalResultsReturned="0" firstResultPosition="1" pgr="0"></ResultSet> "

このようなエラーが返ってきました。

記述したのは以下のコードです。

$aaaa = file_get_contents($url);

$xml= simplexml_load_file($aaaa);


echo($aaaa);は何も出力しません

ちなみにサーバーはローカル環境のWebサーバーです(xampp)


追記:よくわからないのですが

$aaaa = file_get_contents("http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appi...******&query=%E3%81%82&start=1&results=10");

echo($aaaa);

とやると取得データが表示されます…


追記の追記:解決策はありましたがよくわかりません

$urlをhttp_build_query()関数で生成していたのですが

$url1='http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch'

$url1.='?'.http_build_query(パラメータの配列);

$url2="パラメータまで直打ち"

echo($url1);と

echo($url2)の表示はまったく同じなのに

file_get_contentsで取得できるのは$url2だけでした。


2 ● pahoo
●30ポイント

1.simplexml_load_stringによる代替

#1のコードが間違っていますね。

まず、下記を実行したときの結果をお知らせください。

$aaaa = file_get_contents($url);
$xml= simplexml_load_string($aaaa);
print_r($xml);

2.SimpleXMLの動作状況確認

次に、phpinfo() 関数を実行すると SimpleXML のパラメータが表示されるはずです。

Revision の値と Schema support が enable になっているかどうかお知らせください。


3.XAMPP

最後に、XAMPP のバージョンをお知らせください。

OS は WindowsXP でのご利用ですか?

◎質問者からの返答

#1のコメントでも書きましたが、echo($aaaa);で何も出力されませんでした。

おっしゃるような方法(simplexml_load_string()関数)を試してみましたが結果も同じです。

まだ詳しく調査していないのですが$urlのパラメータ部分の生成に使用しているhttp_build_query()関数の影響みたいです。

とりあえずhttp_build_query()を使用しないで書いたらうまくいっています。

$Revision: 1.151.2.22.2.35 $ enableになってました。

xamppのversionは 1.6.6aです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ