• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:blogのRSSデータをPHP等でWebページに表示したい)

blogのRSSデータをPHP等でWebページに表示したい

このQ&Aのポイント
  • Webページにblogで作成されたRSSデータを表示する方法について調査しました。
  • 要するに、元のデータのフォントサイズが大きくなれば、表示も大きくなる方法が知りたいです。
  • RSSデータを解析して、文字や画像を自由に書き換えることなく表示する方法について教えてください。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

>区切れなどがわからない状態になってしまいます。 >6つ目以降は表示しないという風に #2では、 >foreach($contents as $content){ でループして中身を表示しているだけですから、 ループの前で$count=0; して 表示する毎に$count++; してやれば、いくつ表示したのか数えてやることができます。 print "<hr>\n"; してやれば区切り線を入れてやることもできますし、 ループに入るまえにtable を書き出して print "<table>\n"; 各内容は print "<tr><td>$html</td></tr>\n"; ループの次に print "</table>\n"; のように動的にtable を構成してやるようにすれば良いと思います。 そこら辺は、HTMLの話なんで好きにやって下さい。

xtort
質問者

お礼

おかげさまで何とか自分の想像していたものができそうです。 長々の申し訳ありませんでした。 有難う御座いました。

その他の回答 (5)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>PHPバージョンが4.xなので なるほど、それですね。 PHP4の場合、(ちょっと試してみることができませんが) http://www.php.net/manual/ja/ref.domxml.php の方を使うんだと思います。 domxml_open_mem() で文字列からXMLのDOMを作成するのでしょう。 domxml_open_file() は、HTTPから直接は読めないので file_get_contents を使うというサンプルが載っています。 >PHP5.xの環境を用意してみます。 PHP5なら、拡張機能とか準備しないでできますね。

xtort
質問者

補足

PHP5の環境では表示することが出来ました! まだPHP4では実現することが出来ていませんが・・・ しかし見ていたところ、新たな問題点が発生してしまいました。 この方法だとRSSに記述されたblogページが、全てひとつのページに表示されてしまい、区切れなどがわからない状態になってしまいます。 このような場合は新たに条件分岐等を用いて、上から1つ目は一番上のテーブル、2つ目は次のテーブル...6つ目以降は表示しないという風に出来るものなのでしょうか? それとも他に何かいい方法が何かありますでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>私が現在使っているサーバーが悪いのでしょうか? かもしれませんね。 ちなみ私が試している環境はPHP5です。 PHP5の場合拡張機能とかでなくそのまま使えるはずなんですが。 >load関数が使えないと出ていて解決方法が不明です http://www.php.net/manual/ja/ref.dom.php http://www.php.net/manual/ja/function.dom-domdocument-load.php もしかして、http:でのファイル指定ができないということであれば、 file_get_contents http://www.php.net/manual/ja/function.file-get-contents.php を使っていったん文字列として読み込んで loadXML http://www.php.net/manual/ja/function.dom-domdocument-loadxml.php で文字列から取り込むといいのかもしれません。

xtort
質問者

補足

私のPHPバージョンが4.xなので出来ないのかもしれません・・・ 見る限りではバージョン4でも出来るような感じなんですが・・・ とりあえず以上の方法とPHP5.xの環境を用意してみます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

PHP自体は使えるんですよね <?php ?> で囲んでますか?

xtort
質問者

お礼

2行目はnew DomDocument()で解決できたみたいです・・・ 3行目がやはり読み込めない状態です。

xtort
質問者

補足

すいません書いた後に気づき、慌てて囲みました。 囲んだところ以下のエラーが発生してしまいました。 Warning: domdocument() expects at least 1 parameter, 0 given in **/test.php on line 2 Fatal error: Call to undefined function: load() in **/test.php on line 3 (**:アドレス/ディレクトリ名) 以上のエラーから $dom = new domDocument; $dom->load("http://**/index.xml"); の行にエラーがあることがわかりました。 2行目ではパラメータに以上があるらしいので、new domDocumentをnewdomDocumentに変更してみたところ、警告は出されなくなったのですが、 3行目の方はload関数が使えないと出ていて解決方法が不明です。 load関数が使えないのは、私が現在使っているサーバーが悪いのでしょうか? 勉強不足で大変申し訳ありませんが、もう少しお付き合いしていただければ幸いです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

こんな感じ ---------------------------------------------------------------- #encoding UTF-8 $dom = new domDocument; $dom->load("index.xml"); $root=$dom->documentElement; $contents=$root->getElementsByTagName("encoded"); foreach($contents as $content){ $html= $content->nodeValue . "\n"; print mb_convert_encoding($html,"SJIS","UTF-8") . "\n";#変換する必要なければ必要なし }

xtort
質問者

お礼

すいません以上のお礼欄に記入したものは間違えです。 キャッシュのデータを間違えて読みにいったため、エラーが起きてい無かっただけでした。

xtort
質問者

補足

以上のデータをPHPとして保存して、index.xmlの部分をRSS1.0のパスに変えれば動くということですよね? PHPとして表示しようと思ったのですが、実行されず、スクリプトがそのまま表示されてしまうのですが・・・ 勉強不足で申し訳ありません・・・

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ブログサービスで少々違うかもしれないのでライブドアでいうと、 <content:encoded>の部分を抜き出して 適当に自分のWebに埋め込めば良いと思う けど、 記事のタイトルだけならともかく他人のBlogの内容を勝手に転記するのは、マズイと思う。 あと、画像についても直リンクになってしまうのもマズイと思う。

xtort
質問者

補足

ちなみにリンク元は自分のブログです。 <content:encoded>を抜き出せばいいのは分かるんですが、それをPHP等で実現しているものがあれば、作らなくてすむので。