2012-02-23 14 views
9

RSSアイテムをFacebookページに投稿するにはRSS Graffittyを使用しています。私はこのタグを追加しましたので、日付を正しく入れる方法<pubdate>の要素RSSフィード

アプリはアイテムは発行日が欠落していた私に言った:

echo "<pubdate>".$row['Date']."</pubdate>"; 

$行[「日付」]は私のMySQLデータベースから取得され、それがDateTime列です。

RSSフィードで認識されるように、どのようにフォーマットする必要がありますか?要素を変更する必要がありますか? <pubDate>要素の

おかげ

+0

'pubdate'ではなく' pubDate'を使用するように注意してください。 – random

答えて

13

RSS 2.0仕様はRFC 822 Date and Time syntaxに準拠する必要があります。つまり、次の形式で表示するには:

金、2012年12月21日午前10時00分01秒GMT

あなたはこれらの例に注意しましょうW3C Feed Validatorを通して、あなたのRSSフィードを実行する場合にエラー有効なRFC822日付回:

<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate> 

<pubDate>Wed, 02 Oct 2002 13:00:00 GMT</pubDate> 

<pubDate>Wed, 02 Oct 2002 15:00:00 +0200</pubDate> 

あなたはMySQLのフォーマットを使用したい場合は、必要に応じてUTC修飾子/マーカーを調整するには、次use of date_format()でカラムを呼びたい:

date_format(Date, '%a, %d %b %Y %H:%i:%s') 

またはあなたはあなたのためにDATE_RSSsetting the formatPHP date method経由でそれを行うことができます。

echo "<pubdate>".date(DATE_RSS, strtotime($row['Date']))."</pubdate>"; 

をご<pubDate>要素がその親<item>ノード内に表示されていることを確認します。

この要素は大文字と小文字を区別します。 pubDateを大文字のDで出力する必要があります。他の要素と同様にすべて小文字(pubdate)ではありません。

+0

feedvalidatorは 'Fri、24 Feb 12 18:11:13 -0700'が間違っています。それは例に似ているようです。なぜそれが起こっている可能性がありますか? http://feed2.w3.org/check.cgi?url=http%3A%2F%2Flujanventas.com – lisovaccaro

+0

年を4桁にして、それをすべて修正する必要があります。@lis – random

+0

おそらく 'DATE_RSS 'DATE_RFC822'の代わりに' 'DATE_RFC822''が生成されます。なぜなら、後者が生成する日付では、年は2桁で表されるからです。 –

1

ちょうどヒント:PHPの日付関数の-rスイッチは、実際には4桁の年を出力するRFC 2822形式の短縮形です。

参照のためにPHP Docを参照してください。

関連する問題