用simplexml解析rss出错

尝试用simplexml解析一个rss数据源,碰到了一个不小的麻烦。每次解析会碰到一个报错:

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement—construct]: Entity: line 161: parser error : Entity ‘Acirc’ not defined in D:\xampp\htdocs\rss.php on line 11

这是解析rss的php代码片段:

try {
	$xml = new SimpleXMLElement($rss);
	var_dump($xml);
} catch(Exception $e) {
	echo $e->getMessage();
}

查看rss数据源,发现里面有一些乱字符,尝试过滤掉乱字符。

用下面的xmlSafe函数过滤字符,问题解决。

function xmlSafe(&$xml_str) {
	$xml_str =preg_replace("/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/",'',$xml_str);
}

2 Replies to “用simplexml解析rss出错”

  1. 看出错的意思是feed里面 类似 &Acirc 这样的字符串。 会被当成XML实体来处理。
    而RSS的dtd中没有定义这个实体。

Leave a Reply

Your email address will not be published.