※ ChatGPTを利用し、要約された質問です(原文:PHPで一部サイトからRSS情報を取得できない)
PHPで一部サイトからRSS情報を取得できない
このQ&Aのポイント
PHPを使用して、他のサイトからRSS情報を取得し、DBにデータを格納するバッチを作成しました。
SimplePieという無料のライブラリを使用して、RSS情報を最大5件取得するファンクションを作成しました。
しかし、一部のWordPressサイトでは、このファンクションを通してもRSS情報を取得できず、空の配列が返されます。調査しても原因がわからず困っています。
PHPを使用して、他のサイトからRSS情報を取得し、
DBにデータを格納する、というような処理をするバッチを作成しています。
SimplePieという無料のライブラリを使用し、
下記のようなファンクションを作成しました。
/* ================= *
* RSS情報を最大5件取得
* =================*/
function get_rss_info($feed_url)
{
// 戻り値
$rss_list = array();
// RSSデータを取得
$feed = new SimplePie();
$feed -> enable_cache(false);
$feed -> set_feed_url($feed_url);
$feed -> init();
$feed->handle_content_type();
// 過去記事を最大5記事まで取得
$feedItems = $feed -> get_items(0, 5);
foreach($feedItems as $item)
{
// ※自作クラスです
$rss = new RSS();
$rss->rss_id = $item -> get_id();
$rss->rss_title = $item -> get_title();
$rss->published_date = $item -> get_date('Y/m/d H:i:s');
$rss->rss_url = $item -> get_permalink();
$rss->rss_text = $item -> get_description();
array_push($rss_list, $rss);
}
return $rss_list;
}
上記のファンクションで、アメブロなどのRSS情報は取得できますし、
一部WordPressサイトのRSS情報も問題なく取得することが出来ました。
しかし、一部のWordPressサイトでは、上記のファンクションを通しても
1つもRSS情報を取得することが出来ず、
配列も空のままで返却されてしまっております。
Feedlyなどの外部サービスで情報が取得できているので、
私のプログラムが悪いのだとは思っているのですが・・・
自分なりに調査をしてみたのですが、
全く糸口を掴むことができませんでした。
お知恵を貸していただければと思います。
どうぞよろしくお願いいたします。
お礼
ご回答いただき、誠にありがとうございます! もちろん、確認はしたのですが、 ぱっと見では情報が取得できているサイトと何が違うのか、見分けられないので困っております。 RSSを取り扱うのが素人なので、見分けがついていないだけなのかもしれませんが、 XMLのバージョン、RSSのバージョンともに一致しており、 それぞれの内容も変わらないように見えました。 「generator」に設定されているWordPressのバージョンはもちろん違っておりましたが、 内容は正しく設定されていましたし、 特別な設定はされていないように見えました。 さすがにXML全文を載せるわけにはいかないので控えさせていただきますが、 確認するべき項目などありましたら、教えていただけないでしょうか? どうぞよろしくお願いいたします。
補足
自己解決(?)いたしましたので、共有させていただきます。 SimplePieを使用することをやめ、単純に file_get_content() ⇒ simplexml_load_string() という手順を踏んだのですが、simplexml_load_string()で エラーが発生してしまっていたようでした。 文字コードの関係なのだと思いますので、 別スレッドにて再度質問させていただこうと思います。 ありがとうございました!