• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPパーサー MagpieRSSについて)

PHPパーサー MagpieRSSについて

このQ&Aのポイント
  • PHPパーサーのMagpieRSSを使用しています。読み込むxmlが更新されても反映されません。
  • HTMLとして書き出す際に<p>タグにid名を付けるとエラーが発生します。
  • 1つのxmlしか読み込むことができず、複数のxmlの読み込み方がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#57710
noname#57710
回答No.3

どういう種類のエラーメッセージが出たかわかりますか? こちらで試してみたところ、特に問題なく取得できたのですが…。 ちなみに、前回書いたものに手を加えたのは ・magpieのディレクトリ指定 (rss_fetch.inc、rss_utils.incの場所指定) ・MAGPIE関連のデファイン追加 define('MAGPIE_OUTPUT_ENCODING', 'UTF-8'); define('MAGPIE_CACHE_ON', false); ・mb_convert_encodingの変換元・先を変更 mb_convert_encoding($xxxxx, "EUC-JP", "UTF-8"); エラーは全然出ていません。

ao_
質問者

補足

動作確認までして頂いてありがとうございます。 質問の際に付けるコードを間違っていました。 これを付けるつもりでした。 <?php require_once 'rss_fetch.inc'; require_once 'rss_utils.inc'; $url = 'http://www.xxxx/xxxxx/index.xml'; $rss = fetch_rss($url); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); echo "<ul>?n"; $rss->items = array_slice($rss->items, 0, 5); foreach ($rss->items as $item ) { $title = $item[title]; $title = mb_convert_encoding($title, "UTF-8", "auto"); $url = $item[link]; $date = date("Y.m.d", $item['date_timestamp']); echo "<li><a href=?"$url?">$title</a><span>[$date]</span></li>?n"; } echo "</ul>?n"; ?> すみません。これと前回いただいた回答で再度チャレンジしてみます。

その他の回答 (3)

noname#57710
noname#57710
回答No.4

#3の補足に書いていただいたコードでも問題なく実行できました。 ちなみに、バックスラッシュが入るべきところが"?"になっていますけど実際はバックスラッシュが入っているんですよね?(\"、\nなど) まだエラーが出るようでしたら、どんなエラーが出ているかも書いていただけるとお力になれるかもしれません。

ao_
質問者

お礼

返事が遅くなってしまい申し訳ありません。 別の事をしていてしばらくこの問題から離れていました。 バックスラッシュはちゃんと入っています。 で、なんとか動きました。 本当にありがとうございました! また何かあったときはよろしくお願いします。 よいお年を。

noname#57710
noname#57710
回答No.2

キャッシュ時間は MAGPIE_CACHE_AGE で指定だったかな?いろいろ試してみてください。 配列はarray()関数を使用します。 ループ処理はwhileとかforとか使って行います。 その辺りはPHPのマニュアルなどで調べてみてください。 ちなみにこんな感じですかね。 動作確認していないので動くかどうかわかりませんが(^^; <?php require_once 'rss_fetch.inc'; require_once 'rss_utils.inc'; $url = array( 'http://www.xxxxx/xxxxxx/index.xml', 'http://www.xxxxx/aaaaaa/index.rdf', 'http://www.xxxxx/bbbbbb/atom.xml'); for ($i = 0; isset($url[$i]); $i++) { $rss = fetch_rss($url[$i]); $title = $rss->channel['title']; $title = mb_convert_encoding($title, "UTF-8", "auto"); $rss->items = array_slice($rss->items, 0, 1); foreach ($rss->items as $item ) { $description = $item[description]; $description = mb_convert_encoding($description, "UTF-8", "auto"); $item_url = $item[link]; $date = date("Y.m.d", $item['date_timestamp']); echo "$description\n"; } } ?>

ao_
質問者

お礼

ありがとうございます。 いただいたソースで試してみましたが、何十行にも及ぶエラーメッセージが出てしまいました。やっぱり複数のxmlを読み込むのは不可能なのでしょうか…

noname#57710
noname#57710
回答No.1

Magpieのキャッシュ(MAGPIE_CACHE_ON)が有効になっていないですか?明示的にオフにしてみてください。 <p>タグのid属性はちょっとわかりません。 複数のxmlを読み込みたい場合は、4行目の$urlを配列にして5~14行目をループ処理で繰り替えす、というのではいかがでしょうか。

ao_
質問者

お礼

早速ありがとうございます。 更新についてですが、ある一定時間経過したら更新されました。もしかしたらそういう時間が設定されているのかもしれませんね。 >複数のxmlを読み込みたい場合は、4行目の$urlを配列にして5~14行目をループ処理で繰り替えす、というのではいかがでしょうか。 すみません。PHPについてはまったくの素人のため、せっかくのアドバイスが理解できません。配列とループ処理はどうすればいいんでしょうか。

関連するQ&A