21

さまざまなアプリケーションで RSS/Atom フィードを生成する必要があり、両方を生成でき、すべての一般的な問題を既に処理している優れたライブラリまたはクラスを知りたいです。

たとえば、私が何年も使用していたものは日付の正しい形式を設定していないため、私のフィードは複数のアグリゲーターによって適切に処理されていません。

更新: ライブラリを探しているのはなぜですか? 数回ハッキングした、何年も使用していたものには少し問題があるためです。仕様が正しく守られていない可能性があります。

RSS フィードで一部のエントリが重複するのはなぜですか?

4

5 に答える 5

28

PHP Universal Feed Generatorは、まさにあなたが求めているもののようです。新しいフィードを宣言し、それを目的の仕様に出力する、OO ベースの簡単な方法があります。

また、その機能の 1 つとして日付形式の変換が組み込まれています。

特徴:

  • RSS 1.0、RSS 2.0、および ATOM 1.0 フィードを生成します
  • すべてのフィードは、フィード バリデーターによって検証されます。
  • さまざまなバージョンに適切な名前空間を実装します。
  • 日付形式を自動的に変換します。
  • ATOM フィードの UUID を生成します。
  • 必要なタグの CDATA エンコーディングを処理します。

サポートされているバージョン:

  • RSS 1.0 (公式に RSS 0.90 を廃止)
  • RSS 2.0 (正式に RSS 0.91、0.92、0.93、0.94 を廃止)
  • アトム 1.0
于 2008-10-08T12:59:04.087 に答える
4

本当に図書館が必要ですか?フォーマットを選択し、その仕様に従って有効なXMLを出力します。

これが始めるためのチュートリアルです。

于 2008-10-08T12:41:25.650 に答える
3

うーん、IMO、エンクロージャーが必要でない限り、これらのフォーマットはどちらもクラスなしで作成するのに十分簡単です。たとえば、私が管理しているWebサイトのRSSフィードの場合、小さなSmartyテンプレートを作成するだけで、非常にスムーズに機能します。

于 2008-10-08T12:43:47.317 に答える
3

英語以外の文字セットについては、PHP 関数の htmlentities を参照してください: http://php.net/manual/en/function.htmlentities.php

クロアチア語の文字セットをサポートするために追加しました:

$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent, ENT_COMPAT, 'UTF-8');
于 2010-09-27T08:29:52.473 に答える
1

PHP Universal Feed Generator は良い答えです。正しいフランス語の文字を処理するために、Web ページのコメントに応じてコードを変更するだけで済みました。

http://www.ajaxray.com/blog/2008/03/08/php-universal-feed-generator-supports-rss-10-rss-20-and-atom/#comment-341

Kereste が言うように (6 月 1 日) FeedWrite は ä などの英語以外の utf-8 文字で問題を引き起こします。ソースコードの 298 行目を次のように変更しました。

$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : str_replace ( array ( '&', '”', “'”, ” ), array ( '&' , '"', ''' , '<' , '>' ), $tagContent );

文字を間違った xml エンティティに変換するのを避けるため。

于 2008-10-09T09:22:28.003 に答える