1

我正在获取一个 RSS 提要,但我只希望它显示标签内包含特定图像 url 的项目。这是我要搜索的特定位:

<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>

同样,我只想在“media:thumbnail”标签中显示具有该特定图像 url 的项目并丢弃所有其他项目。而且我不需要显示图像本身。我只是想利用它的存在来决定要过滤掉哪些项目。

4

1 回答 1

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>
    <?
}
?>
于 2012-08-30T06:36:27.620 回答