删除RSS Feed中的广告

时间:2011-08-29 16:32:30

标签: php rss simplepie

我有一个我正在开发的本地Intranet站点,我想在其中显示来自其他站点的一些RSS源。目前是基于Concrete5 CMS,我使用RSS显示器插件来显示提要。该插件使用SimplePie来解析Feed。默认情况下,插件显示整个RSS内容。我已经调整了插件(SimplePie),只显示带有链接,日期和每个帖子/条目中第一个图像的标题。 我找到了这个函数,我将$item->get_content()传递给了第一个图像的源:

function getFirstImage($text) {
    $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
$pattern = "/<img[^>]+\>/i";
preg_match($pattern, $text, $matches);
    $text = $matches[0];
return $text;
}
function scrapeImage($text) {

    $pattern = '/src=[\'"]?([^\'" >]+)[\'" >]/'; 
    preg_match($pattern, $text, $link);
$link = $link[1];
$link = urldecode($link);
return $link;
}

它工作正常,问题是某些Feed中包含广告,有时会放在实际的帖子内容之前,因此此函数会返回广告的网址。显然,这些RSS广告针对的是使用rss阅读器的人,但是为了在网站上显示它们,它们非常烦人。

如果我尝试定位<img>preg_match()以外的确切标记,我觉得它只适用于我从中获取标记的特定Feed。 (例如,如果我尝试使用preg_match()仅查找<p>代码中的图片)

如何从实际帖子中获取非广告的第一张图片,而无需更改我想要显示的每个Feed的代码?

1 个答案:

答案 0 :(得分:2)

我不确定这是否适用于您的情况,但通常广告图片来自与常规内容不同的域或子域。您可以尝试根据URL中的域或子域过滤掉图像,这些域与rss源的域或子域不同。