用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);
}

作者: 发表于May 13, 2007 at 9:42 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,,

2 条评论 »

  1. Filia Tao 于 2007-05-13 @ 15:43:18 留言

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

  2. volcano 于 2007-05-13 @ 16:11:33 留言

    的确有Â字样,但是数据中已经用cdata处理过,主要问题还是在乱字符上。

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论