【问题标题】:Filtering out RSS items with Magpie that contain a specific image使用 Magpie 过滤掉包含特定图像的 RSS 项目
【发布时间】:2012-08-29 03:02:49
【问题描述】:

在这方面使用 Wordpress。我正在使用 Magpie 来获取 RSS 提要,但我只希望它显示包含特定图像的项目。这是我要搜索的特定标签:

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

这是我在此应用程序中使用的特定代码。这是基本的,而且我对 Magpie 或 PHP 并不是非常熟练(我假设对于 PHP 知识更丰富的人来说,有更优雅的方法可以做到这一点):

<?php include_once(ABSPATH.WPINC.'/rss.php'); $feed = fetch_rss('http://www.publicbroadcasting.net/wfpl/.eventsfeed'); $items = array_slice($feed->items, 0, 4);?>

<?php if (!empty($items)) : ?>
<?php foreach ($items as $item) : ?>

<?php if (!preg_match('/<media:thumbnail\surl\="http:\/\/media.publicbroadcasting.net\/wfpl\/events\/images\/ourPick5.gif".+?>/i', $item['description'])) 
continue; ?>

    <li><a href="<?php echo $item['link']; ?>"><div class="item-headline"><?php echo $item['title']; ?></div>
    <div class="item-info"><?php echo $item['description']; ?>
    </div></a></li></ul>

<?php endforeach; ?>
<?php endif; ?>

同样,我只想在“media:thumbnail”标签中显示具有该特定图像 url 的项目并丢弃所有其他项目。

【问题讨论】:

  • 仅供参考,您应该使用 fetch_feed() 而不是 fetch_rss(),后者使用 SimplePie API 而不是 Magpie。喜鹊不再维护。
  • 我知道,但是我正在获取的 RSS 提要存在一些问题,并且命名空间问题需要不使用 SimplePie。我已经解决了这些问题(虽然没有修复它们)并且正在使用 SimplePie。

标签: wordpress rss magpie


【解决方案1】:

添加这部分,

<?php if (!preg_match('/<media:thumbnail\surl\="http:\/\/media.publicbroadcasting.net\/wfpl\/events\/images\/ourPick5.gif".+?>/i', $item['description'])) 
    continue; ?>

之前

<li><a href="<?php echo $item['link']; ?>"><div class="item-headline"><?php echo $item['title']; ?></div>
    <div class="item-info"><?php echo $item['description']; ?>
    </div></a></li>

【讨论】:

  • 主要问题是我需要检测 标签是否包含上面列出的特定 url 属性,而不仅仅是它是否包含 标签。跨度>
  • 然后只需更改 preg_match() 的模式。例如,(preg_match('/&lt;media:thumbnail\surl\="http:\/\/media.publicbroadcasting.net\/wfpl\/events\/images\/ourPick5.gif".+?&gt;/i', $item['description']))
  • 我可能遗漏了一些东西,但我已经插入了代码并且它没有过滤掉任何 RSS 项目。它们都在显示。即使是不包含带有相关网址的标签的项目。
  • 刚刚更新了帖子中的代码。意识到我遗漏了“!”在“preg_match”之前......但现在我遇到了相反的问题。没有显示任何项目,即使是包含 url 的项目...
  • 您可以尝试使用 stripos() 而不是 preg_match() 来查找 url,例如 if (stripos($item['description'], 'http://media.publicbroadcasting.net/wfpl/events/images/ourPick5.gif'))
猜你喜欢
  • 2021-05-06
  • 1970-01-01
  • 2020-02-13
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多