3
我试图让一个HTML解析器,但是当我加载HTML我得到这样如何忽略CDATA标签?
警告警告:DOM文档:: loadHTML()[domdocument.loadhtml]:在CDATA为0x1C无效字符的实体,线:1302
这里是我的代码使用
class Parser
{
public $url=null;
public $html=null;
public $tidy=null;
public $head=null;
public $head_xpath=null;
function __construct($url){
$this->url=$url;
$this->html=file_get_contents($this->url);
$this->tidy=tidy_parse_string($this->html);
$this->head=new DOMDocument();
$this->head->loadHTML($this->tidy->head());
$this->head_xpath= new DOMXPath($this->head);
}
}
$x=new Parser("http://www.guardian.co.uk/politics/2012/mar/24/vince-cable-coalition-banking-row");
我周围搜查,发现LIBXML_NOCDATA恒定的,但我不知道如何设置它。 那么我怎么能完全忽略CDATA?
而且我猜想在内容中盲目取代它不是一种选择,因为它可能在某些文章中? – 2012-03-24 20:01:38
@Artjom Kurapov我试着用str_replace替换cdata标签,但它仍然给出警告,我不能确定我删除了它们,因为有些人把它们写成//(在这里有很多空格)<![cdata [。 – nope 2012-03-24 20:06:44
你可以发布xml中的违规行吗?如果它是格式良好的cdata,它不应该抛出该错误。看起来你可能有一个字符编码问题。 – 2012-03-24 20:32:12