使用PHP显示多个RSS源

时间:2010-05-09 22:18:58

标签: php rss

有谁知道怎么做?我知道如何将单个Feed显示为一个简单的列表,但它变得更加复杂。我想显示一个列表,但有多个源,每个源都具有 list-style-image

示例:

(img1) This is data from rss feed 1
(img2) This is data from rss feed 2

非常感谢你的帮助!

这就是我对单一来源列表的看法。

# INSTANTIATE CURL.
$curl = curl_init();

# CURL SETTINGS.
curl_setopt($curl, CURLOPT_URL, "RSSURL");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);

# GRAB THE XML FILE.
$xmlTwitter = curl_exec($curl);

curl_close($curl);

# SET UP XML OBJECT.
$xmlObjTwitter = simplexml_load_string( $xmlTwitter );

$tempCounter = 0;

foreach ( $xmlObjTwitter->channel->item as $item )
{                    
    # DISPLAY ONLY 10 ITEMS.
    if ( $tempCounter < 11 )
    {
        echo "<li><a href=\"{$item -> guid}\">{$item -> title}</a></li>
";
    }

    $tempCounter += 1;
}

编辑1

好的,非常感谢。很有帮助。我试图通过以下方式实现它: 1.将SimplePie安装到PHP文件夹中的站点根目录中。 2.实现给定的代码。 (还没有造型,想先让它发挥作用。)

我的代码目前是:

<?php
require_once('/simplepie.inc');

$feed = new SimplePie();
$feed->set_feed_url(array('rss1', 'rss2'));
$feed->init();
$feed->handle_content_type();
foreach ($feed->get_items(0, 100) as $item) {
    $n = array_search($item->get_feed(), $feeds);
    echo '<li class="feed'.$n.'">'.$item->get_title().'</li>';
}
?>\

我在我的网站上收到了这个输出:

  

set_feed_url(阵列( 'http://vimeo.com/user/likes/rss',   'http://vimeo.com/user/videos/rss'));   $馈&​​GT;的init();   $馈&​​GT; handle_content_type();的foreach   ($ feed-&gt; get_items(0,100)as $ item){   $ n = array_search($ item-&gt; get_feed(),   $饲料); echo''。$ item-&gt; get_title()。'   “; }?&gt; \

我显然做错了什么,但我很难发现它是什么。 再次感谢。

1 个答案:

答案 0 :(得分:1)

您似乎遇到两个问题:聚合多个RSS源,然后将它们显示在列表中。

1:使用SimplePie lib - 可能是与RSS相关的最简单和最好的一个。由于文件大小,可能对某人来说有点过分,但无论如何。它还将为您处理按日期排序。 http://simplepie.org/

<?php
$feed = new SimplePie();
$feed->set_feed_url(array('http://rss1', 'http://rss2'));
$feed->init();
$feed->handle_content_type();
foreach($feed->get_items(0, 100) as $item) {
    $n = array_search($item->get_feed(), $feeds);
    echo '<li class="feed'.$n.'">'.$item->get_title().'</li>';
}
?>

2:akamike说什么(并删除?),但列表样式图像可能很痛苦 - 几乎不可能对齐。更灵活的解决方案是删除它们并使用背景。

CSS:

li.feed1, li.feed2 {
    list-style: none;
    background-position: left center;
    background-repeat: no-repeat; 
}

li.feed1 { background-image: url(feed1icon.png); }
li.feed2 { background-image: url(feed2icon.png); }