ニュースをRSSで自動配信したい

このQ&Aのポイント
  • ニュースの更新情報をRSSで配信する方法について教えてください。
  • PHPを使用してニュースを更新し、データベースに情報を登録した後にRSSで自動配信する方法を教えてください。
  • 初心者向けのニュースをRSSで自動配信する方法について教えてください。
回答を見る
  • ベストアンサー

ニュースをRSSで自動配信したい

こんにちは、いつもお世話になっております。 HTMLの知識しかないホームページ担当者です。 PHPを使ってニュースの更新をおこなっているのですが、その更新情報をRSSで配信したいと思っています。 いろいろと探したのですが、手作業で毎回更新内容を登録していく方法や、PC内の更新情報を自動取得する方法しか見つけることができませんでした。 PHPでニュースを更新(データベースに情報が登録)→RSSで自動配信 ということをする方法、または方法が載っているサイトを教えていただけないでしょうか。 なお、教えていただける場合は、初心者ですので少し噛み砕いて教えていただけると助かります。 よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数3

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

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

DWじゃなかったんですね。失礼しました。 content-typeを指定するheaderは出力する時の直前、或いはファイルの先頭に入れます。 何かしら出力した後にheaderが使われるとエラーになります。 前の回答で挙げたIBMのソースには出てこないのですが、 同じ記事の元ソース(英語)を見ると作成したXMLソースをechoする直前に使われています。 http://www.ibm.com/developerworks/library/x-phprss/ linkタグはアクセスしたときRSSアイコンをアドレスバーに表示させたいページのheadタグ内です。 これについてはRSSを発信しているサイトのソースを見るのが参考になると思います。 http://japan.zdnet.com/ 以下は私が以前書いたRSS生成のソース(に説明を入れたもの)です。 <?php //記事データ(変数に入れておく) $logdata = array( array('id'=>'記事ID','date'=>'タイムスタンプ','title'=>'タイトル','content'=>'本文','link'=>'記事のURL') ); header('Content-Type: application/rss+xml; charset=UTF-8'); //XML宣言をそのまま入れるとエラーになるのでechoする echo '<?xml version="1.0" encoding="UTF-8"?'.'>'."\n"; ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"> <channel> <title><?php echo('配信元サイトのタイトル'); ?></title> <atom:link href="<?php echo('RSSのURL'); ?>" rel="self" type="application/rss+xml" /> <link><?php echo('配信元サイトのURL'); ?></link> <description><?php echo('サイトの簡単な説明'); ?></description> <language>ja</language> <pubDate><?php echo('配信元サイトの最終更新日時'); ?></pubDate> <lastBuildDate><?php echo('RSSファイルの最終更新日時'); ?></lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator><?php echo('サイトを制作するのに使われたプログラムの名称。なくてもいい') ?></generator> <webMaster><?php echo('サイト管理者名') ?></webMaster> <?php //ここから記事RSS出力 foreach($logdata as $i => $data ){ ?> <item> <title><?php print($data["title"]); ?></title> <link><?php print($data["link"]); ?></link> <description><![CDATA[<?php print($data["content"]); ?>]]></description> <pubDate><?php print(gmdate('D, d M Y H:i:s',$data["date"])." GMT"); ?></pubDate> <guid isPermaLink="false"><?php print("post-".$data["id"]); ?></guid> </item> <?php } ?> </channel> </rss>

yako_k
質問者

お礼

tenderfeel様、ご回答ありがとうございます。 教えていただいたページやソースを参考にして、IBMページの「リスト 3. RSS.phpの出力」と同じ形式で出力できるようになりました。 IEとFirefoxで確認しましたが、問題なく表示されているようです。 このたびは拙い説明にも関わらず、いろいろと教えていただき、本当にありがとうございました!

その他の回答 (2)

回答No.2

おそらくはDreamweaverだと思うのですが、RSSとして表示するページ(仮にfeed.phpとする)にテンプレートを使う必要はないです。 普通のページと共通する部分は一切無いはずなので。 前の回答で参照URLとして挙げたページにRSS2.0の例としてソースが載っていますが、 最終的にfeed.phpを表示した時のソースがあんな感じになって、 Feed用のバリデーションをかけたときValidになればOKです。 http://validator.w3.org/feed/ >ユーザーの方がアクセスされるのはphpではなくxmlファイルでないといけないということなのでしょうか? ユーザーやRSSリーダーがアクセスするのはfeed.php(仮)です。 表向きというのはファイルが返すContent-TypeをXMLにする、という意味でした。 XML構文的にValidでもそのままだとPHPファイルと解釈されてしまうので、前の回答に書いたheaderが必要です。 http://www.kanzaki.com/docs/sw/http-header.html IBMにいい感じのチュートリアルがあるので参考にどうぞ http://www.ibm.com/developerworks/jp/xml/library/x-phprss/index.html

yako_k
質問者

お礼

tenderfeel様、こんにちは。 時間が空いてしまいましたのに、再度のご回答本当にありがとうございます! テンプレートと書いたので余計な混乱を招いてしまって申し訳ありません。 PHPの用語を知らないので説明が分かりにくいとは思うのですが、ご容赦ください。 現在のニュースのページ(RSSではない)は、以下の2種類を使っています。 ※作ったのは前任のSEで、私はファイルをひとつひとつ見ながら修正している状況です。 -------------------------------------------------- (1)***.php  ブラウザに表示しているページ  「<php」で始まり「?>」で終わるPHPのデータが入っている(HTMLはない)。  「$fname = "***.html";」という一文があり、HTMLのデザインを引っ張っている。 (2)***.html  ***.phpにアクセスした時に表示されるデザイン(HTML)が入っている。 -------------------------------------------------- というふうになっています。 こちらを使ってRSSを作ろうとしたのですが、ご紹介いただいたIBMのページの「リスト2」を見るに、PHPの中にHTML部分(今回はxml部分)も入れてしまうということなのですね。そんなことも分かっていなくてすみません。 IBMのページを参考に、頑張って作ってみます! それで、一番最初の時に教えていただいた -------------------------------------------------- ページ出力時のヘッダーは次のようになります。 header('Content-Type: application/rss+xml; charset=UTF-8'); -------------------------------------------------- と -------------------------------------------------- headタグ内に次のリンクタグを入れておけば、アドレスバーにRSSアイコンが表示されるようになります。 <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="http://example.com/feed" /> -------------------------------------------------- なのですが、こちらはたとえばIBMの「リスト2」だとどの位置に書けば良いのでしょうか…? 何度も申し訳ないのですが、お力をお貸しいただけると助かります。 よろしくお願いします。

回答No.1

RSSはXMLなんですが文書構造が決まっています。詳しい解説は参照URLを見ていただくとして、 参照URLにあるサンプルソースの<item>が各ニュースとなりますので、 PHPならforeachやforでループ出力して各記事のタイトルや投稿日などを入れます。 ニュースページがすでにあるなら、そのページを複製してHTMLをXMLに変更すれば作れると思います。 中身がPHPでも表向きはXMLにしなければならないので、ページ出力時のヘッダーは次のようになります。 header('Content-Type: application/rss+xml; charset=UTF-8'); headタグ内に次のリンクタグを入れておけば、アドレスバーにRSSアイコンが表示されるようになります。 <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="http://example.com/feed" />

参考URL:
http://hail2u.net/documents/rss20notes.html
yako_k
質問者

お礼

tenderfeel様、こんにちは。 このたびはご返答ありがとうございました。 教えていただいた情報を元に奮闘している間に2週間近くが経ってしまいました。 お礼が遅くなり、申し訳ありません。 ニュースのページを元に作った結果、一応は最新データを表示させることができたのですが、一部わからないことがあったので、もしまだこちらをご覧でしたら教えていただけると助かります。 ニュースのページはphpを表示しているのですが、テンプレートとしてhtmlのデータを反映しています。 今回も、rss.phpとテンプレートのrss.htmlを作りました。 ですので、現在RSSとして機能しているのはphpの方です。 ですが、「中身がPHPでも表向きはXMLにしなければならないので」ということは、ユーザーの方がアクセスされるのはphpではなくxmlファイルでないといけないということなのでしょうか? xmlファイルの中身をphpにする、ということですか? まったく初心者な質問でお恥ずかしいのですが、ご教示ください。 よろしくお願いいたします。

関連するQ&A

  • RSSでニュースを更新。

    現在かなり小さいですがニュースサイトを運営しています。 そのサイトではニュースを更新すると同時に、RSSも一緒に手動で更新しています。 そこで質問なのですがRSSをCGIやPHPでHTML等に変換し、”RSSでホームページのニュースを更新”させることは可能なのでしょうか? また、もし可能な場合それはタブーと思われるでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • RSSリーダの自動更新について

    RSSリーダの自動更新について 独自機能をつけた個人用RSSリーダを作りたいと考えております。 現在考えている仕組みはPHPとMySQLを組み合わせて、 RSSを取得し、更新日時やタイトルやリンクなどをデータベースに保存させ、 要求に合わせて必要な情報をデータベースから取ってきて表示させるようにしています。 RSSの取得は、現在手動ですので、RSSの取得にもれがありますし、手間がかかります。 ですので、RSSリーダに自動更新のプログラムを付けて、RSSをもれなく自動で取得したいと考えています。 自動更新なので、自宅サーバ(CentOS)を準備するつもりでいます。 どうか自動更新のプログラムや自動更新につながるようなキーワードを教えてください。

  • RSSで配信されるページについて

    RSSで配信される情報についての質問です。 RSSが新着情報として配信するページは以下の定義でしょうか? 「RSSリーダが巡回したときに、以前はなかったページを新着として取得する」 この質問の意図としては「既に配信してある記事に対して何らかの変更が加えられた場合に、それを新着情報として配信するのか」を知ることです。ページ「追加」ではなく「更新」のときはどのような振る舞いをするんでしょうか…。もし分かる方がいれば教えてください。

  • RSS配信のCGI

    ご存知の方がいらっしゃいましたら教えていただきたいのですが、 複数の外部BLOGのRSS配信情報を束ねて、(収集して) その一覧をRSS配信するようなCGIなどございますでしょうか? ≪例≫ 今日はAさんがBLOGを更新しました。 昨日はBさんがBLOGを更新しています。 ↑↑↑↑↑↑ この束ねた情報自体をRSS配信したいと考えています。 各BLOGのPing情報を受信して、発信するようなものでも結構です。 自身のホームページに設置して運用を考えています。 ※ソフトでもいいです。

    • 締切済み
    • CGI
  • RSS機能(自動配信)

    自分のサイトに、指定した記事等を自動表示させる方法を知りませんか? 例えば、サッカー日本代表情報をgooや新聞社のサイト等が配信すると、自動でそれを取得し、自分のサイトのテキストエリアに表示されていく感じの機能? RSSというのでそれができるのでしょうか? よく、サイトで「最新情報」等と表示されていますが、あれは手打ちで書いているわけではないですよね?

  • RSSなどのフィードを配信する

    PHP+MySQLで簡易的なブログのようなシステムを作成しました。 仕様としては管理ページのフォームでタイトル、本文などを入力して送信すると表側のページに最新記事として表示されているという簡単なものです。 ここで、ブログのようにフィードを配信して、登録しているユーザーに最新記事の更新情報を送りたいと考えているのですが、その方法や仕組みなどが解説されているウェブサイトなどご存知の方がいらっしゃいましたら教えていただけませんでしょうか。 一応自分で調べてみて http://phpspot.net/php/pgPHP_RSS_Builder.html このようなものは見つけたのですが、これだと記事の投稿と別にRSSの登録をしないといけませんので、少々難がありました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • RSS配信していないサイトのフィードを取得する方法は?

    WEBサイトにRSSボタンがないサイト(たとえば、NTTのサイトなどhttp://www.ntt-west.co.jp/news/) のフィードを取得する方法はないでしょうか。 http://○○○/▼▼.xmlなどの”URL”で取得したいです。 自分の情報収集のために、WEBページにお気に入RSS情報を表示 させる目的です。 ブラウザやソフトウェアのRSS機能ではなく、私のWEBページに 情報を羅列するサイトを構築しました(PHPで) RSS配信しているサイトは、URLがあるので問題なく表示できているのですが RSS配信していないサイトも表示させたいと考えています よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPでRSS配信するときの処理について

    PHPでRSSを配信しようと思うのですが、 大規模なサイトのため少々負荷が気になります。 PHPの処理でRSSを表示させたものを毎回呼び出すのか、 index.rdfなどの別ファイルに書き出してからそれを呼び出すのか どちらが一般的なのでしょうか。 個人的には後者の方法を10分おきくらいに Cronで叩いて書き出すというのが一番良さそうな気がします。 ご意見をお聞かせください。

    • 締切済み
    • PHP
  • RSSの登録と使い方を教えてください。

    RSSを使いたいと考えていますが、いまひとつ理解していません。選択したニュースや記事、ブログを自動的に取得していく作業がしたいのです。お薦めのRSSと登録方法を教えてください。

  • ブログ等のRSS配信について

    最新情報をRSS配信しているブログをよく見ます。 「PINGサーバで更新情報がとれる」と聞いたことがあるのですがブログを提供している会社の「最新情報:RSS」なんて書いてあるものとは別物なのでしょうか? それともPINGサーバなんてものは存在せず私の聞き違いでしょうか?

専門家に質問してみよう