用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);
}
作者: Volcano 发表于May 13, 2007 at 9:42 am
Filia Tao 于 2007-05-13 @ 15:43:18 留言 :
看出错的意思是feed里面 类似 Â 这样的字符串。 会被当成XML实体来处理。
而RSS的dtd中没有定义这个实体。
volcano 于 2007-05-13 @ 16:11:33 留言 :
的确有Â字样,但是数据中已经用cdata处理过,主要问题还是在乱字符上。