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

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

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

現在Webページを製作しているのですが、blogで作成されたRSSデータを別の場所で表示したいと考えています。 調べたところ、レッツPHPさんの所がヒットしたのですが、このようなものでなく、フォントデータや画像のデータをそのまま表示するものが欲しいのです。 要するにRSSデータを解析して、文字等をこちらの都合で書き換えるのではなく、元のデータのフォントサイズが大きくなれば、こちらの表示も大きくなるといったものがです。 RSSのデータを見ている限りでは、フォントデータや画像データを持っているため、可能なことだと思うのですが、それを実現する手段が分かりません。 このような場合に、用いる事ができるもの等ありましたら、教えていただけるとありがたいです。 それでは、よろしくお願い致します。

  • xtort
  • お礼率24% (37/149)

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

  • ベストアンサー
  • 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等で実現しているものがあれば、作らなくてすむので。

関連するQ&A

  • RSS 2.0をWebページに読み込みたい

    Webとブログを両方やっていて、RSSでWebのトップページにブログの更新情報を読み込みたいと思っています。 <a href="link">title</a>(2006.1.15) みたいな感じで。 MagpieRSSを利用してPHPでrdfを読み込む方法は知っているのですが、<rss version="2.0">をMagpieRSSで読み込もうとしてもうまく読み取ってくれません。 Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 26, column 2) in /........./rss_fetch.inc on line 237 こんなエラーメッセージが表示されます。 PHPを利用してうまくRSS 2.0を読み取る方法をご存知の方がいらっしゃいましたら、どうかご教示お願いします。

    • 締切済み
    • PHP
  • FC2ブログRSSを自分のWebページに表示したい

    今自分はFC2Blogを使ってBlogを書いているのですが、この投稿記事のタイトルを自分のHPに表示できないかと調べております。 ネット上のサービスなどで広告付きでできるものはあるのですがそれ以外でできないかと考えています。 調べているとPHPプログラムなどを利用して表示させる方法があるみたいです。 いろいろと試してみたのですがどれもうまくいきませんでした。 一つ目の理由は FC2BlogのRSSの書き出しがhttp://******.blog.fc2.com/?xmlという形式なのですがこれがどうもうまく読み込めません・・・・ 何かいい方法があればご教授願います。 希望としては ・広告等がつかない ・更新が投稿された際に「New」などと出るとベスト です。 http://www.candy-cgi.com/様のRSS reader Type1を利用してみたのですがどうもうまく設置できませんでした。 やり方が悪いのかもしれません。 ただ内容的にはこのやり方が一番よかったのでこれが使えれば一番いいのですが・・・・ もしこの仕組みを使ってFC2BlogのRSSを表示させる方法を教えていただけると一番助かります。 難しいならほかの方法でも構いません。 またHP公開している先もFC2WEBです。

  • Magpie(Rss)を使ってWebサイトに複数のブログ更新を表示する方法。

     最初に…Webサイト製作をオンラインで勉強しながら、個人のサイトを製作をしてます。初心者です。質問内容でPHPを使うのですが…(RSS/PHP関係のサイトは見てきましたが…)こちらは全く知識が無いのと同じ状態です。最後の手段としてこちらへ質問させて頂きました。すみませんがご教授よろしくお願い申し上げます。    下記が内容です。 Webサイト製作をしている最中なのですが、トップページにMagpie(RSS)を使ってブログの更新状況を表示したいのです。  表示の方法は… 1.複数のRSSファイルを読み込んで、トップページに5件表示して、別ページで過去一ヶ月分のブログ最新情報を表示したい。 2.複数のブログ記事を、日付で逆ソートして最新記事を上にしてまとめて表示したい。 3.新しい情報(1,2日以内とか)には、NEW!マークとか付けて区別を付けたい。  表示の内容は…  ブログサイトのタイトル (by 名前)   ブログタイトル(2008/05/01 ○○:○○)  (※表示しきれない場合は”…”で表示) この様に表示する場合どのように記述すればよろしいのでしょうか? 記述する場所は、HTMLで表示したい場所でよろしいのでしょうか? 一応参考にしてきたサイトはこちらです。→ http://www.hyuki.com/yukiwiki/wiki.cgi?MagpieRSS http://ameblo.jp/yamasita-94nsr/entry-10018566158.html http://sozaifan.exblog.jp/3440754/ 長文・駄文ですみませんが、よろしくお願い申し上げます。 文字数を考えてここで一度質問します。  

  • PHP4でRSS書き出しをしたい

    PHPで掲示板のスクリプトを作って運営しています。この掲示板に、投稿をRSSで出力する機能を追加したいと思っています。PHPのバージョンは4.4.4です。いちばん手っ取り早く実現するにはどうするのがよいでしょうか。PEARのパッケージがあればいいなぁと思ったのですが、検索した限りでは見つけられませんでした。ご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • ブログのRSSをウェブサイトで表示させたい

    ブログのRSSをウェブサイトで表示させたい こんにちは。 spryを使ってブログのRSSをウェブサイトで表示させています。 今は <title>や<description>を新着情報として表示しているのですが、画像やリンクも表示したいと思い<content:encoded>の中身の利用を考えています。 試しに<content:encoded>を表示させたら画像やリンクのHTMLがそのまま表示されてしまいました。 HTMLとして?(画像やリンクが)表示されるようにするにはどうすればいいのでしょうか。 下にHTMLがそのまま表示されてしまったデータを記載します。 ------------------------------------------------------------ <head> <script type="text/javascript"> <!-- var updata = new Spry.Data.XMLDataSet("RSSのアドレス", "rdf:RDF/item"); //--> </script> </head> <body> <div spry:region="updata" id="updata"> <div spry:repeat ="updata"> <p>{updata::title}</p> <p>{updata::content:encoded}</p> </div> </div> </div> ------------------------------------------------------------

  • ごちゃまぜRSSリーダーにページ送りをつけたい

    ごちゃまぜRSSリーダーを使っています。 http://www.vector.co.jp/soft/unix/net/se334908.html これに、ページ送りをつけたいと思い、レッツPHP!さんの簡易ページャーをつけました。 http://php.s3.to/simple/ ですが、意図したとおりに動きません。 RSS10件ごとにページを送りたいのですが、以下のコードを張ってみたところ、RSSが全件表示され、その下に、ページ送りが表示されます。 10件ごとにページ送りするためにはどのようにしたらよいのでしょうか?

    • 締切済み
    • PHP
  • RSSファイルを取得して、現在のHPのトップページに表示したい

    最近になってようやくRSSに興味を持ち、色々調べていました。 自分のやりたいことは、あるキーワードでフィルタリングされたRSSファイルを自動で取得して、例えば、あるディレクトリに自動保存されて、そのファイルをホームページのトップページの一角にいつも新しい状態のニュースを表示させたいのです。 ただ、ブログにキーワードをかけてRSSでリストを取得するというのはあるのですが、ニュースとか、他のところからも集めたいのです。 また、表示させるということでは、レッツPHPのRSSブロガーなど様々あるようなのですが、具体的に、どんな作業で最後見えるまでになるのかも、イメージできない状態です。 色々読めば読むほどちんぷんかんぷんになってきて混乱状態になってました。なんとかご教授いただけないでしょうか?

    • ベストアンサー
    • CGI
  • rssリーダから読まれた時に画像を表示させたくない。

    ブログ初心者です。 最近ブログをはじめまして、アクセス解析も入れています。 ですが、rssリーダからブログを読まれた時にはアクセスは記録されませんよね。 そこで、芸能人がアメーバブログがやっているように、rssリーダから見たときには、画像が表示されないようにしたいのですが、方法をご教授いただきたいです。 使っているブログは忍者ブログでhtmlはいじれます。 私自身は詳しいhtmlの知識がありません。 お分かりになる方がございましたら、ヒント、アドバイスぜひよろしくお願いします

  • RSSからblog(ブログ)の本文を抽出 特定のブログのRSSにて…

    以前、「RSSからblog(ブログ)の本文を抽出したい」という質問をした者です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1677591 以前ご教授いただいた方法でプログラムを作り、 javaのDOMを使ってRSSからブログの本文を抽出することができましたが、 (参考:http://www.hellohiro.com/xmldom.htm HelloWorldDOMPageList.java) 特定のブログのRSSからは本文のデータを取得することができませんでした。 例えば、exiteやFC2などのブログのRSSからはデータを取得することができませんでした。 リンクや、タイトルなどは問題なく取得できるのですが、 本文が記述されている要素(例えば、exiteならdescription,FC2ならcontent:encoded) 内のデータを取得しようとすると、プログラムの結果として、 何も取得できずに、空白となってしまいます。 ライブドアやヤフーなど他のブログのRSSでは成功したのですが… 何か問題があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • XML
  • PHPでのRSSの読み込み件数について

    普通はRSSは、表示される件数は決まっていると思うのですが、 その件数以上にブログの記事のタイトルなどを読み込みたいのです。 たとえば http://e0166.blog89.fc2.com/?xml というRSSだと、15件までしか表示されませんが、 16件目をPHPで取得したいです。 Google Readerだと、16件以上も読み込んでくれるのですが。。。 HTMLを読み込むしかないのでしょうか? また、そのときのアドバイスなどもください。

    • 締切済み
    • PHP