我在PHP中有一个小站点(无论如何,这是更动态的静态)。我看到多个网站发布了RSS通量或其他名称。
我想知道是否有可能加载这样的RSS通量,按网站关键字主题过滤它,并使用PHP将其显示为一个小主题新闻列。
这项任务是否复杂?我该怎么办?我在这个领域是全新的,很抱歉,如果这些问题已经得到解答。
答案 0 :(得分:5)
更新:此答案的代码中有一些错误。感谢@obelizsk识别它们,我已经更新了答案。
给出RSS:
<rss version="2.0">
<channel>
<title>(Title)</title>
<description>(Description)</description>
<link>http://www.link.to/the/feed/</link>
<item>
<title> New RSS Creation Tool </title>
<description> FeedForAll generates rss feeds so webmasters do not need to struggle with feed creation </description>
<link> http://www.feedforall.com </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
,其中填充了您通过关键字检查选择的数据。
您只需遍历$news
。
另外,您还可以使用JavaScript和XMLHttpRequest执行相同的任务,而无需PHP干预。以XML格式加载Feed并执行相同的过程。要呈现数据,您可以使用document.createElement()
附加包含您请求的信息的子节点。