Убрать рекламу в ленте RSS - PullRequest
       15

Убрать рекламу в ленте RSS

1 голос
/ 29 августа 2011

У меня есть локальный интранет-сайт, который я разрабатываю, на котором я хочу отображать 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>)

Как я могу получить первое изображение из самого сообщения, которое не является рекламой, без необходимости изменять код для каждого канала, который я хочу отображать?

1 Ответ

2 голосов
/ 29 августа 2011

Я не уверен, что это подойдет для вашей ситуации, но обычно рекламные изображения приходят из другого домена или субдомена, чем обычный контент.Вы можете попытаться отфильтровать изображения по домену или поддомену, если URL-адрес отличается от домена или поддомена канала RSS.

...