1

CURL を使用して wordpress ブログから XML データを取得しようとしています。

これが私のPHPです:

$ch = curl_init("http://www.hazelandruby.com/blog/feed");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml') );
$data = curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);//close connection
unset($ch);
var_dump($data);

$data空文字列です。 curl_getInfoこの情報を教えてください:

Array ( [url] => http://www.hazelandruby.com/blog/feed [content_type] => text/html [http_code] => 301 [header_size] => 335 [request_size] => 99 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.039749 [namelookup_time] => 0.001784 [connect_time] => 0.001862 [pretransfer_time] => 0.001866 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => 0 [starttransfer_time] => 0.03974 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => http://www.hazelandruby.com/blog/feed/ )

XML ファイル自体にアクセスできます: http://www.hazelandruby.com/blog/feed/

最終的に、これで SimpleXmlElement を作成できるようにしたいのですが、うまくいきません。私のPHPは正しいですか?ワードプレスは正しい XML を出力していますか? そうでない場合 (wordpress の動作を変更したくない場合)、URL を XML として解釈してデータを取得するにはどうすればよいですか?

4

1 に答える 1

3

curl_getinfo()呼び出しによって返されたヘッダーに基づいて、具体的[http_code] => 301には、リクエストはリダイレクトされていますが、それに従うことが許可されていることを curl に伝えていません。

これを行うには、次のように設定する必要がありCURLOPT_FOLLOWLOCATIONますtrue

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

また、関連性があるため、リダイレクト先の URL はhttp://www.hazelandruby.com/blog/feed/、元の URL に/. 元の URLに末尾を追加することで、問題を「修正」できるはずです/(できれば =P)。

于 2013-10-14T18:57:56.397 に答える