2013-02-09 2 views
2

У меня есть этот код:Удалить DOM Предупреждение PHP

$strhtml = file_get_contents('05001400300320100033100.html'); 
$dochtml = new DOMDocument(); 
$dochtml->loadHTML($strhtml); 
$elm = $dochtml->getElementById('upPanelActuciones'); 
print $dochtml->saveXml($elm); 

Im получать это предупреждение:

 Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 674 in C:\AppServ\www\video01\sector2\dom3.php on line 10 

     Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1019 in C:\AppServ\www\video01\sector2\dom3.php on line 10 

     Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1020 in C:\AppServ\www\video01\sector2\dom3.php on line 10 

     Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1022 in C:\AppServ\www\video01\sector2\dom3.php on line 10 

Я не могу манипулировать HTML (я знаю, что HTML-файл с ошибками), так что это способ удалить эти предупреждения? (нет шоу).

Заранее за вашу помощь.

ответ

10

DOMDocument очень хорошо справляется с несовершенной разметкой, но он предупреждает об этом везде, когда это делает.

Это плохо документировано здесь. Решением этого является реализация отдельного апарата для обработки только этих ошибок.

Установите libxml_use_internal_errors (true) перед вызовом loadHTML. Этот предотвратит появление ошибок при работе с вашим обработчиком ошибок по умолчанию. И вы можете получить их (если хотите), используя другие ошибки libxml .

Вы можете найти более подробную информацию здесь http://www.php.net/manual/en/ref.libxml.php

Правильный способ борьбы с ошибками DomDocument это:

<?php 

// enable user error handling 
var_dump(libxml_use_internal_errors(true)); 

// load the document 
$doc = new DOMDocument; 

if (!$doc->load('file.xml')) { 
    foreach (libxml_get_errors() as $error) { 
     // handle errors here 
    } 

    libxml_clear_errors(); 
} 

?>