2011-12-21 4 views
2

DOM-анализ в php работает только в том случае, если HTML отлично помечен. Мне нужно разобрать html, который не является идеальным DOM. И этот HTML-код с удаленного сервера, поэтому я не могу его изменить.Нерегулярный DOM Анализ в php

<html> 
<body> 
    <table> 
    <tr> 
    <td> 
    1 
    </td> 
    <td> 
    2 
    </td></td> 
    </tr> 
</table> 

, когда я разбираю html с этой структурой, он дает ошибку. Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : td in Entity, line: 173 in C:\wamp\wwwxxxxxx on line 51

ответ

4

Инструменты, такие как tidy, должны иметь возможность исправления HTML, чтобы вы могли использовать его в DOM.

$html = "<html> 
<body> 
    <table> 
    <tr> 
    <td> 
    1 
    </td> 
    <td> 
    2 
    </td></td> 
    </tr> 
</table>"; 

$tidy = tidy_parse_string($html); 

$html = $tidy->html(); 
$cleanHTML = $html->value; 
$doc = new DomDocument(); 
$doc-> loadhtml($cleanHTML); 

Примечание: Tidy не поставляется с PHP, вы должны установить расширение для использования функции

Смежные вопросы