1

我有一个正在开发的本地 Intranet 站点,我想在该站点上显示来自其他站点的一些 rss 提要。目前是基于 Concrete5 CMS 构建的,我正在使用 RSS 显示插件来显示提要。该插件使用SimplePie来解析提要。默认情况下,插件会显示整个 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;
}

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

如果我尝试定位除<img>内部之外的确切标签,preg_match()我觉得它仅适用于我从中获取标签的特定提要。(例如,如果我尝试使用preg_match()仅查找<p>标签内的图像)

如何在不更改要显示的每个提要的代码的情况下从不是广告的实际帖子中获取第一张图片?

4

1 回答 1

2

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

于 2011-08-29T16:39:33.450 回答