我用这个php来获取我博客的最新帖子:
function read_rss($display=0,$url='') {
$doc = new DOMDocument();
$doc->load($url);
$itemArr = array();
foreach ($doc->getElementsByTagName('item') as $node) {
if ($display == 0) {
break;
}
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'description' => $node->getElementsByTagName('description')->item(0)->nodeValue,
'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
);
array_push($itemArr, $itemRSS);
$display--;
}
return $itemArr;
}
我从教程中学到了这一点,因为我不确定如何完成这项任务。但是它有效,但我一直在错误日志中打印出这个错误:
[12-Jun-2010 06:13:36] PHP Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Document is empty in http://www.prettyklicks.com/blog/?feed=rss2, line: 1 in public_html/includes/functions.php on line 153
[12-Jun-2010 06:13:36] PHP Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Start tag expected, '<' not found in http://www.prettyklicks.com/blog/?feed=rss2, line: 1 in public_html/includes/functions.php on line 153
有什么想法吗?
谢谢!
答案 0 :(得分:0)
我有同样的问题,这是解决方案:
替换行:
$ doc-&GT;负载($ URL);
与
$ doc-&gt; loadXML(preg_replace(“/&gt; \ s +&lt;”,file_get_contents($ url)));
这样做是将url加载到字符串中,去除标记之间的所有空格,然后将其传递给DOMDocument对象进行加载。
为什么空白很重要?我不确定但似乎WordPress RSS提要包含空格以使其很好地缩进,但这会干扰DOMDocument的解析器并使其看起来像是缺少标记。
归功于http://netweblogic.com/php/domdocument-whitespace-php/,我找到了答案;他们为不同的情况解决了同样的问题。
奇怪(我不明白),我的代码在我的开发服务器上没有解决方法,但在生产服务器上却没有。我不确定为什么,但它必须与版本和&amp; Apache / PHP / WordPress的配置。
无论如何,我希望这有所帮助,现在还为时不晚!
保罗。