2012-03-24 14 views
3

私はHTMLパーサを作成しようとしているが、私は、HTMLを読み込むとき、私はこのCDATAタグを無視するには?

警告などの警告を得る:のDOMDocument :: loadHTML()[domdocument.loadhtml]:エンティティでCDATA 0x1cに無効な文字、ラインを:1302

ここで私は私の周りを検索し、LIBXML_NOCDATAが一定た

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"); 

を使用するコードですが、私はそれを設定する方法がわかりません。 どうやってCDATAを完全に無視できますか?

+0

私は内容が盲目的に置き換えられていると思うのですが、それはいくつかの記事にあるかもしれないので、オプションではありませんか? –

+0

@Artjom Kurapov cdataタグをstr_replaceに置き換えようとしましたが、まだ警告が出ます。 – nope

+0

xmlから問題の行を投稿できますか?うまく形成されたcdataの場合、そのエラーを投げてはいけません。文字エンコードの問題があるようです。 –

答えて

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

は動作する必要がありますが、実際にはテストしていません。

関連する問題