如何忽略CDATA标签?

时间:2012-03-24 19:58:24

标签: php cdata libxml2

我正在尝试创建一个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?

1 个答案:

答案 0 :(得分:0)

$this->html = preg_replace('~//\s*?<!\[CDATA\[\s*|\s*//\]\]>~', '', $this->html);

应该可以工作,但还没有真正测试过。