使用SimplePie </media:thumbnail>过滤具有特定<media:thumbnail>属性的RSS项目

时间:2012-08-29 05:58:08

标签: php wordpress rss simplepie

我正在抓取RSS Feed,但我只希望它显示包含标签内特定图片网址的项目。以下是我要搜索的特定位:

<media:thumbnail url="http://media.publicbroadcasting.net/wfpl/events/images/ourPick5.gif"/>

以下是我在此应用程序中使用的特定代码。它是基本的,我对Simplepie或PHP并不擅长(我假设有更优雅的方法可以帮助那些对PHP有更强大知识的人):

<?php include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('http://www.publicbroadcasting.net/wfpl/.eventsfeed');
if (!is_wp_error( $rss ) ) :  
$maxitems = $rss->get_item_quantity(5); 
$rss_items = $rss->get_items(0, $maxitems); 
endif; ?>

<ul id="events">
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    foreach ( $rss_items as $item ) :  ?>

    <li>
        <div><?php echo $item->get_title(); ?></div>
        <div><?php echo $item->get_description(); ?></div>
    </li>
    <?php endforeach; ?>
</ul>

同样,我只想在&#34; media:thumbnail&#34;中显示具有该特定图片网址的项目。标记并丢弃所有其他项目。而且我不需要显示图像本身。我只想用它的存在来决定过滤掉哪些项目。

1 个答案:

答案 0 :(得分:1)

如果要在解析描述中检查指定标记内的某个URL,请使用preg_match()。在您的特定情况下,将部件echo $item->get_description();更改为

$strDesc = $item->get_description();
if (preg_match('/<media:thumbnail\surl\="http:\/\/media.publicbroadcasting.net\/wfpl\/events\/images\/ourPick5.gif".+?>/i', $strDesc))
    echo $strDesc;

[编辑]

我意识到<media>标记不在<description>标记中。在这种情况下,这应该有用。

<?php 
include_once './inc/autoloader.php'; 
$feed = new SimplePie();
$feed->set_feed_url('http://www.publicbroadcasting.net/wfpl/.eventsfeed');
$feed->enable_cache(false);
$feed->init();
$feed->handle_content_type();


foreach ($feed->get_items() as $item)
{
    if ($enclosure = $item->get_enclosure())
        if ($enclosure->get_thumbnail() != "http://media.publicbroadcasting.net/wfpl/events/images/ourPick5.gif")
            continue;
    ?>
    <ul>
        <li>
            <div><?php echo $item->get_title(); ?></div>
            <div><?php echo $item->get_description(); ?></div>
        </li>
    </ul>
    <?
}
?>