2010-04-24 45 views
7

我试图解析一些HTML,是不是我的服务器PHP解析无效的HTML

$dom = new DOMDocument(); 
    $dom->loadHTMLfile("http://www.some-site.org/page.aspx");  
    echo $dom->getElementById('his_id')->item(0); 

上,但PHP返回一个错误,像ID his_id already defined in http://www.some-site.org/page.aspx, line: 33。我认为这是因为DOMDocument正在处理无效的html。那么,即使无效,我如何解析它?

回答

6

你应该运行HTML Tidy来清理它,然后解析它。

$html = file_get_contents('http://www.some-site.org/page.aspx'); 
$config = array(
    'clean' => 'yes', 
    'output-html' => 'yes', 
); 
$tidy = tidy_parse_string($html, $config, 'utf8'); 
$tidy->cleanRepair(); 
$dom = new DOMDocument; 
$dom->loadHTML($tidy); 

看到这个list of options

+0

整洁不适用于我:( – kmunky 2010-04-24 01:32:24

+0

@kmunky为什么没有整理你SOL,基本上 – cletus 2010-04-24 01:59:58

+0

我真的不知道为什么,我会联系我的托管服务提供商... – kmunky 2010-04-24 11:21:57

0

阅读文档,我看到一个$dom->strictErrorChecking默认为TRUE。如果您设置$dom->strictErrorChecking = false,会发生什么情况?

+0

仍然是同样的问题 – kmunky 2010-04-24 01:26:18

+0

我有同样的问题。一个礼物? – 2010-07-29 10:35:14