Обновление: В коде этого ответа было несколько ошибок. Спасибо @obelizsk за их идентификацию, с тех пор я обновил ответ.
Учитывая RSS:
<code>
<rss version="2.0">
<channel>
<title>(Title)</title>
<description>(Description)</description>
<link><a href="http://www.link.to/the/feed/</link" rel="nofollow noreferrer">http://www.link.to/the/feed/</link</a>>
<item>
<title> New RSS Creation Tool </title>
<description> FeedForAll generates rss feeds so webmasters do not need to struggle with feed creation </description>
<link> <a href="http://www.feedforall.com" rel="nofollow noreferrer">http://www.feedforall.com</a> </link>
<pubDate> Aug, 22 2004 00:12:30 EST </pubDate>
<category> software </category>
</item>
</channel>
</rss>
Вы можете отсканировать теги заголовка, описания и / или категории по интересующим вас ключевым словам.
Допустим, в вашем PHP-скрипте есть массив, т.е.
$keywords = array("php", "mysql", "open source");
Затем, используя SimpleXML, вы можете проанализировать RSS-канал:
function has_keywords($haystack, $wordlist)
{
$found = false;
foreach ($wordlist as $w)
{
if (stripos($haystack, $w) !== false) {
$found = true;
break;
}
}
return $found;
}
$rss = simplexml_load_file("http://www.mywebsite.com/my/rss/feed/");
foreach ($rss->channel->item as $i)
{
if (
has_keywords($i->title, $keywords)
|| has_keywords($i->description, $keywords)
|| has_keywords($i->category)
)
{
$news[] = array
(
"title" => $i->title,
"description" => $i->description,
"link" => $i->link
);
}
}
Это предоставит вам массив $news
, заполненный данными, выбранными вами при проверке ключевого слова.
Вы можете отобразить это с любым HTML-кодом, который вы хотите, просто итерируя по $news
.
Кроме того, вы можете выполнить ту же задачу с помощью JavaScript и XMLHttpRequest без необходимости вмешательства PHP. Загрузите канал в виде XML и выполните ту же процедуру. Чтобы отобразить данные, вы можете использовать document.createElement()
для добавления дочерних узлов, содержащих запрошенную вами информацию.