我一直在研究这个问题已经有一段时间了,我处在一个完整的区域,我不确定我是否会采用正确的方式。
我所拥有的是我网站上显示的RSS源。我创建了一个搜索框,我要求它与XML的标题/描述部分匹配。
<?php
$xml = <<<XML
XML;
$sxe = simplexml_load_file('http://www.music-news.com/rss/news.asp');
$searchKeyword = $_POST["SearchBox"];
$area = $sxe->xpath("//item[contains(title,'".$searchKeyword."')]");
print_r($area);
?>
从搜索框的提交按钮调出此代码时,会显示一个只显示以下内容的页面
Array ( [0] => SimpleXMLElement Object ( [title] => SimpleXMLElement Object ( ) [description] => SimpleXMLElement Object ( ) [link] => SimpleXMLElement Object ( ) [pubDate] => Mon, 27 Apr 2015 10:01:00 GMT [guid] => SimpleXMLElement Object ( ) [author] => SimpleXMLElement Object ( ) ) )
它会在RSS提要中恢复正确的记录(可以从发布日期确定)。但是我试图得到它,以便搜索结果显示为原始RSS提要在网站上显示。初始RSS提要的代码在
之下<?php
$rss = simplexml_load_file('http://www.music-news.com/rss/news.asp');
foreach ($rss->channel->item as $item)
{
echo "<h2>" .$item->title . "</h2>";
echo "<p>" . $item->pubDate . "</p>";
echo "<p>" . $item->description . "</p>";
echo '<p><a href="'. $item->link .'">' .ReadMore. "</a><p>";
}
?>
非常感谢任何帮助
提前致谢
答案 0 :(得分:0)
$area
应该是一个零到多个simplexml
- 元素的数组,所以请使用:
foreach($area as $item) {
echo "<h2>" .$item->title . "</h2>";
echo "<p>" . $item->pubDate . "</p>";
// and so on
}
查看一个工作示例:https://eval.in/319904
顺便说一下,你应该清理$searchKeyword
以防止任何有害的输入,请参阅Cleaning/sanitizing xpath attributes,特别是最受好评的答案有关于使用PHP进行消毒的最后一段。