我正在抓取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;中显示具有该特定图片网址的项目。标记并丢弃所有其他项目。而且我不需要显示图像本身。我只想用它的存在来决定过滤掉哪些项目。
答案 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>
<?
}
?>