我在PHP中有一个小站点(无论如何,这是更动态的静态).我看到多个网站发布RSS通量或其他名称.
我想知道是否有可能加载这样的RSS通量,按网站关键字主题过滤它,并使用PHP显示它像一个小主题新闻列.
这个任务很复杂吗?我该怎么办?我是这个领域的全新人,很抱歉,如果已经回答了这样的问题.
更新:此答案的代码中存在一些错误.感谢@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");Run Code Online (Sandbox Code Playgroud)
然后,使用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
);
}
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个数组$news,其中填充了您通过关键字检查选择的数据.
您只需迭代即可使用您想要的任何HTML代码进行渲染$news.
另外,您还可以使用JavaScript和XMLHttpRequest执行相同的任务,而无需PHP干预.以XML格式加载Feed并执行相同的过程.要呈现数据,您可以使用document.createElement()附加包含您请求的信息的子节点.