仕事と子育てを両立。働くママを、もっと笑顔に!>>

初めまして、お世話になります。
PHPに関しては初心者です。

Magpie RSSを使用してフィードをトップページに表示させたいのですが
タイトルは問題ないなく表示されるのですが、日付を表示させようとすると1970年01月01日 と表示され取得出来ない状態です。

MagpieRSSのバージョンは0.72でRSS2.0です。
取得先はwordpress バーション2.61になります。

色々と調べてみて
Magpie0.7より使用できる$item['date_timestamp']という参照方法も試してみたのですがだめでした。
サーバーの問題かと思い複数のサーバーでも試したのですが1970年01月01日と表示されてしまします。

具体的なソースは下記の通りです。

<?php
require_once 'rss_fetch.inc';
define('MAGPIE_FETCH_TIME_OUT', 30); // タイムアウトまでの
define('MAGPIE_CACHE_AGE', 30*60); // キャッシュ更新の時間
$url = 'フィードのURL';
$rss = fetch_rss($url);
$title = $rss->channel['title'];


echo "<li class=\"ItemTitle\"><a href=\"$url\">RSS記事一覧を表示</a></li>\n";
$title = mb_convert_encoding($title, "UTF-8", "auto");

$rss->items = array_slice($rss->items, 0, 10);
foreach ($rss->items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
$date_str = date("m月d日 ", $item['date_timestamp']);
if ($date >= time() - 3600 * 24 * 7) {
$date_str = "<EM>" . $date_str . "</EM>";
}

echo "<li class=\"ItemTitle\">$date_str<a href=\"$url\">$title</a></li>\n";
};
$url = $rss->channel['link'];

?>

どなたか対処法をご存じの方がおられましたらご教授頂けると
幸いに思います。

以上、よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

配列のキーは取得するRSSによって違うので、


print_r($rss);で一度構造確認をした方がいいです。

wordpressということなので
$date_str = date("m月d日 ", strtotime($item[pubdate]));
これで表示されないでしょうか
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
配列キーの入力が違っておりました。
お教え頂いたように

$date_str = date("m月d日 ", strtotime($item[pubdate]));

を仕様すると表示されました。
RSSによって違うとのことですので、確認が必要みたいです。

やっと解決いたしました。
誠にありがとうございます。

お礼日時:2008/10/05 12:14

私も同様の問題で悩んでいます。


$item['date_timestamp']だけが空っぽになります。

Apache 2.0.63
PHP 5.1.6
MagpieRSS 0.72
取得しようとしているもの Atom 1.0

これらを試しても解消しませんでした。
http://linux.ohwada.jp/modules/smartsection/item …
http://d.hatena.ne.jp/ms-k/20051224


Apacheのログを見ると、次のNoticeが出ています。

PHP Notice: Undefined index: version in /***/rss_parse.inc on line 173


何が原因でしょうか。
便乗質問で申し訳ありません。

この回答への補足

投稿ありがとうございます。
上記の方法で解決いたしました。
恐らくAtom1.0の配列キーが違うものになっているのが
問題かもしれません。
上記方法はwordpress用ですが、同様の問題で表示されないのであればAtom1.0の配列キーを指定すると直るかもしれません。

補足日時:2008/10/05 12:15
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMagpieRSSを使用して自分のHPにxmlを表示させる方法

お世話になります。

データベースよりxmlを生成し、自分のHPに1ページに埋め込みたいと思っています。

いろいろなサイトを参考に、MagpieRSSを使用して表示させたいのですが、コードのサンプルに記載されている他サイトのRSS・xmlは表示できるのですが、ローカルのxmlは下記のエラーが出てしまい表示できません。
Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 9, column 21) in /aaa/rss/rss_fetch.inc on line 238
変更した部分は、表示するxmlのURLのみです。

使用しているphpのバージョンは4.34、MagpieRSSのバージョンは0.72です。

問題のrss.phpのソース↓
<?php
require_once 'rss_fetch.inc';
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$url = 'http://www.aaa.com/rss.xml';
$rss = fetch_rss($url);
if ($rss && !$rss->ERROR) {
drawRSS($rss);
}else{
echo "取得できませんでした。";
}
function drawRSS($rss){
$items = array_slice($rss->items, 0, 10);
echo "<ul>\n";
foreach ($items as $item ) {
$title = $item[title];
$title = mb_convert_encoding($title, "UTF-8", "auto");
$url = $item[link];
$description = $item[description];
$description = mb_convert_encoding($description, "UTF-8", "auto");
echo "<li><a href=\"$url\">$title</a></li>\n$description";
}
echo "</ul>\n";
}
?>


何か、対処方法をご存知の方教えてください。
よろしくお願いいたします。

お世話になります。

データベースよりxmlを生成し、自分のHPに1ページに埋め込みたいと思っています。

いろいろなサイトを参考に、MagpieRSSを使用して表示させたいのですが、コードのサンプルに記載されている他サイトのRSS・xmlは表示できるのですが、ローカルのxmlは下記のエラーが出てしまい表示できません。
Warning: MagpieRSS: Failed to parse RSS file. (not well-formed (invalid token) at line 9, column 21) in /aaa/rss/rss_fetch.inc on line 238
変更した部分は、表示するxmlのURLのみで...続きを読む

Aベストアンサー

>9行目21文字目は漢字でした
だとしたら、思いつくとしたら「文字コード」なんだけどな。
まさかXML宣言のencodingがないとか間違っている(ファイルがShift_JISだったとか。アルファベットは大半の文字コードでASCIIコードが基準になって共通なため、問題が発生しにくい)ってオチはないですよねぇ?

QjqueryでRSS内のdc:dateなどの要素の取得方法

jqueryを使用してRSSのdc:dateやdc:subjectなどの要素を取得するにはどうしたらよいでしょうか。
現在以下のようなコードにしていまして、なんとなく取得したRSSの最初に書いてあるxmlns:dc="http://purl.org/dc/elements/1.1/" となってる部分を利用すればいいのかなと思い立ち、children関数などを使ってみましたが取得できませんでした。

$.ajax({
url: settings.xmllocation,
async: true,
cache: false,
dataType: "xml",
success: function(xml) {
$(xml).find('item').each(function() {
var title = $(this).find('title').text();
var url = $(this).find('link').text();
var date = $(this).children('http://purl.org/dc/elements/1.1/').find('dc:date').text();
var element = $('<div><a href="' + url + '">' + title + '('+date+')</a></div>');
$(container).append(element);
elements.push(element);
});
});

jqueryを使用してRSSのdc:dateやdc:subjectなどの要素を取得するにはどうしたらよいでしょうか。
現在以下のようなコードにしていまして、なんとなく取得したRSSの最初に書いてあるxmlns:dc="http://purl.org/dc/elements/1.1/" となってる部分を利用すればいいのかなと思い立ち、children関数などを使ってみましたが取得できませんでした。

$.ajax({
url: settings.xmllocation,
async: true,
cache: false,
dataType: "xm...続きを読む

Aベストアンサー

初めまして。
jQueryを使ったことはありませんが、DOMをそのまま使うことで名前空間のついた要素(dc:data)なども取得できると思います。

$.ajax({
url : "rss.xml",
async : true,
cache : false,
dataType : "xml",

success : function(xml) {
$(xml).find("item").each(function() {
var title = $(this).find("title").text();
var url = $(this).find("link").text();

var date;

$(this).children().each(function() {
if ($(this)[0].tagName == "dc:date") {
date = $(this).text();
}
});

var element = ('<div><a href="' + url + '">' + title + '('+date+')</a></div>');
$(container).append(element);
elements.push(element);
});
}
});

初めまして。
jQueryを使ったことはありませんが、DOMをそのまま使うことで名前空間のついた要素(dc:data)なども取得できると思います。

$.ajax({
url : "rss.xml",
async : true,
cache : false,
dataType : "xml",

success : function(xml) {
$(xml).find("item").each(function() {
var title = $(this).find("title").text();
var url = $(this).find("link").text();

var date;

$(this).children().each(function() {
if ($(this)[0].tagName == "dc:date") {
date = $(this).text();
...続きを読む

Q他サイトに表示させた場合 日付が1970/1/1になる。

MTOSを使っていますが、
自分のホームページにMYOSの新着情報を表示させたのですが、
日付部分が全て1970/1/1になります。
PHPの記載に何か違う所があるのでしょうか、

<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://www.公開したいアドレスですatom.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to)
$title = JcodeConvert($title, 4, 2);
foreach ($rss->items as $item ) {
$title = $item[title];
$title = JcodeConvert($title, 4, 2);
$url = $item[link];
$itemday = date('Y/n/j',strtotime(substr($item['dc']['date'],0,10)));
$itemday = JcodeConvert($itemday, 4, 2);
echo "<p class=\"midasi\"><a href=\"$url\" target=\"_blank\">$title</a>\n";
echo "<span class=\"date\">${itemday}</span></p>\n";

}
?>

またMTの方のATOMテンプレートを変更すれば良いのでしょうか。

<$MTHTTPContentType type="application/atom+xml"$><?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><$MTBlogName remove_html="1" encode_xml="1"$></title>
<link rel="alternate" type="text/html" href="<$MTBlogURL encode_xml="1"$>" />
<link rel="self" type="application/atom+xml" href="<$MTLink template="atom"$>" />
<id>tag:<$MTBlogHost exclude_port="1" encode_xml="1"$>,<$MTTemplateCreatedOn format="%Y-%m-%d"$>:<$MTBlogRelativeURL encode_xml="1"$>/<$MTBlogID$></id>
<updated><MTEntries lastn="1"><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></MTEntries></updated>
<MTIfNonEmpty tag="MTBlogDescription"><subtitle><$MTBlogDescription remove_html="1" encode_xml="1"$></subtitle></MTIfNonEmpty>
<generator uri="http://www.sixapart.com/movabletype/"><$MTProductName version="1"$></generator>
<MTEntries lastn="15">
<entry>
<title><$MTEntryTitle remove_html="1" encode_xml="1"$></title>
<link rel="alternate" type="text/html" href="<$MTEntryPermalink encode_xml="1"$>" />
<id><$MTEntryAtomID$></id>

<published><$MTEntryDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></published>
<updated><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>

<summary><$MTEntryExcerpt remove_html="1" encode_xml="1"$></summary>
<author>
<name><$MTEntryAuthorDisplayName encode_xml="1"$></name>
<MTIfNonEmpty tag="MTEntryAuthorURL"><uri><$MTEntryAuthorURL encode_xml="1"$></uri></MTIfNonEmpty>
</author>
<MTEntryCategories>
<category term="<$MTCategoryLabel encode_xml="1"$>" scheme="http://www.sixapart.com/ns/types#category" />
</MTEntryCategories>
<MTEntryIfTagged><MTEntryTags><category term="<$MTTagName normalize="1" encode_xml="1"$>" label="<$MTTagName encode_xml="1"$>" scheme="http://www.sixapart.com/ns/types#tag" />
</MTEntryTags></MTEntryIfTagged>
<content type="html" xml:lang="<$MTBlogLanguage ietf="1"$>" xml:base="<$MTBlogURL encode_xml="1"$>">
<$MTEntryBody encode_xml="1"$>
<$MTEntryMore encode_xml="1"$>
</content>
</entry>
</MTEntries>
</feed>

まだまだ勉強不足なので
ご迷惑お掛けしますがどうぞよろしくお願いいたします。

MTOSを使っていますが、
自分のホームページにMYOSの新着情報を表示させたのですが、
日付部分が全て1970/1/1になります。
PHPの記載に何か違う所があるのでしょうか、

<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://www.公開したいアドレスですatom.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to)
$title = JcodeConvert($title, 4, 2);
foreach ($rss->items as $ite...続きを読む

Aベストアンサー

ATOMテンプレートを見る限りですと、dc:dateが書かれてないような。
$item['updated']で参照してみるとか。

QPHPを使ってRSSコードから画像取得をしたい

PHP初心者です。

PHPを使ってRSSコードから画像取得をしたいと考えていますが、
<content:encoded>や<description>以外の要素を見て抜き出すことはできないのでしょうか?

例えばこのRSSコード内の
http://ch.nicovideo.jp/kindan-nama/live?rss=2.0

<nicoch:live_thumbnail>の要素を見て
http://live.nicovideo.jp/thumb/175454.jpg
↑この画像を取得することはできないのでしょうか?

調べているうちにRSSは全ての情報を提供してくれているわけではないということは分かってきましたが、
RSSコードを見てどこからどこまでが提供されているのかが分からず...

何卒よろしくお願い致します。

Aベストアンサー

【補足】

画像をHTML内に出力したいのであれば

<p><?php

$url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0';
$item = simplexml_load_file($url)->channel->item[0];
$src = $item->children('nicoch', true)->live_thumbnail;
$alt = $item->title;
printf('<img src="%s" alt="%s">', $src, $alt);

?></p>

ブラウザに対して、PHPファイル自体を画像ファイルのように扱わせたいなら

<?php

$url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0';
$xml = simplexml_load_file($url);
$src = $xml->channel->item[0]->children('nicoch', true)->live_thumbnail;

header('Content-Type: image/jpeg');
readfile($src);

【補足】

画像をHTML内に出力したいのであれば

<p><?php

$url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0';
$item = simplexml_load_file($url)->channel->item[0];
$src = $item->children('nicoch', true)->live_thumbnail;
$alt = $item->title;
printf('<img src="%s" alt="%s">', $src, $alt);

?></p>

ブラウザに対して、PHPファイル自体を画像ファイルのように扱わせたいなら

<?php

$url = 'http://ch.nicovideo.jp/kindan-nama/live?rss=2.0';
$xml = simplexml_load_file($url);
$src = ...続きを読む


人気Q&Aランキング