我正在尝试创建一个html解析器,但是当我加载html时,我会收到像这样的警告
警告:DOMDocument :: 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?
答案 0 :(得分:0)
$this->html = preg_replace('~//\s*?<!\[CDATA\[\s*|\s*//\]\]>~', '', $this->html);
应该可以工作,但还没有真正测试过。