PHP парсинг недопустимого HTML

я пытаюсь проанализировать некоторый 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. Так, как я могу проанализировать его даже при том, что недопустимо?

9
задан kmunky 24 April 2010 в 01:11
поделиться

2 ответа

Вы должны запустить на нем 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);

См. Этот список опций .

7
ответ дан 4 December 2019 в 21:48
поделиться

Читая документацию, я вижу $ dom-> strictErrorChecking , по умолчанию значение TRUE. Что произойдет, если вы установите $ dom-> strictErrorChecking = false ?

0
ответ дан 4 December 2019 в 21:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: