Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除RSS源中的广告_Php_Rss_Simplepie - Fatal编程技术网

Php 删除RSS源中的广告

Php 删除RSS源中的广告,php,rss,simplepie,Php,Rss,Simplepie,我有一个我正在开发的本地intranet站点,我想在上面显示来自其他站点的一些rss提要。目前它是建立在Concrete5CMS上的,我正在使用一个RSS显示插件来显示提要。插件用于解析提要。默认情况下,插件显示整个RSS内容。我对插件(SimplePie)进行了调整,使其只显示带有链接、日期和每个帖子/条目中的第一张图片的标题。 我找到了这个函数,我将它传递给$item->get_content(),以获取第一个图像的源: function getFirstImage($text) {

我有一个我正在开发的本地intranet站点,我想在上面显示来自其他站点的一些rss提要。目前它是建立在Concrete5CMS上的,我正在使用一个RSS显示插件来显示提要。插件用于解析提要。默认情况下,插件显示整个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;
}
函数getFirstImage($text){ $text=html_entity_decode($text,ENT_引号,'UTF-8'); $pattern=“/]+)[\'”>]/'; 预匹配($pattern,$text,$link); $link=$link[1]; $link=urldecode($link); 返回$link; } 它工作得很好,问题是一些提要中有广告,这些广告有时放在实际帖子内容之前,因此此函数返回广告的url。显然,这些RSS广告是针对使用RSS阅读器的人的,但如果要在网站上显示这些广告,则非常烦人

如果我尝试在
preg_match()
中定位准确的标记,我觉得它只适用于我从中获取标记的特定提要。(例如,如果我尝试使用
preg_match()
仅查找
标记内的图像)


我如何才能从实际文章中获得第一张不是广告的图像,而不必更改我要显示的每个提要的代码?

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

删除广告可能违反了生成该源的网站的条款。该网站是内部网站,因此不会向公众显示。它有点像一个自定义的起始页,如MyYahoo或iGoogle。我不记得在向这两个站点添加提要时看到过广告,但我已经有一段时间没有使用过这两个站点了。此外,那里似乎有一个很大的灰色地带。一方面,他们为什么要将我的网站和我自己的内容(如果是公开的)货币化?另一方面,我在使用他们的内容,如果我将我的网站货币化,那么我就是在将他们的内容货币化。这是一个内部网站,因此不会向公众展示。-这只会减少你被抓到的可能性,这既不正确也不合法。它有点像一个自定义的起始页,比如MyYahoo或iGoogle。我不记得在向这两个网站添加feed时看到过广告——你是否添加了你计划使用的feed?我的雅虎!或者iGoogle显示全部内容,而不仅仅是标题和原始文章的链接?一方面,为什么他们能够将我的网站和我自己的内容(如果是公开的)货币化哪个“他们”?您正在使用的内容的神秘来源?它们不是,所以这无关紧要。谷歌和雅虎!?在搜索结果中?他们正在使用snippits并链接到您,以便您从中受益,他们也尊重robots.txt。在RSS提要中阅读web应用程序?没有什么能阻止你在内容中添加广告。我确实尝试过,但我认为我的PHP不太正确,因为它似乎不起作用。我试着用雅虎!通过管道查看它是否会通过指向具有特定关键字的域的链接进行过滤,但没有效果。可悲的是,它甚至没有在第一张图片中显示广告图片,但很明显,上面的免责声明说“广告”是一张图片,它反而显示了这张图片/