Получить элемент по идентификатору, используя DomDocument на HTML-странице, которая не работает - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь извлечь только один элемент div, имеющий id=MainText из этой страницы . Однако, когда я загружаю содержимое этой страницы в объект DOM, я получаю несколько ошибок:

Tag g:plusone invalid... 
Unexpected end tag...
htmlParseEntityRef: no name ...
htmlParseEntityRef: expecting ';' ...

Итак, я подумал, можно ли игнорировать все остальные вещи из документа и перейти прямо к той части, которую я хочу, получить только элемент div с этим конкретным идентификатором.

Или есть ли альтернатива использованию класса domdocument для достижения того же? Я не очень хорошо пишу регулярные выражения.

Ответы [ 2 ]

2 голосов
/ 04 июня 2011

Валидатор w3c при быстром запуске выдает много ошибок.Попробуйте очистить HTML таким образом, прежде чем передать его в DomDocument:

#Assuming that $html is your html source (retrieve it as you prefer)
$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();

$document = new DOMDocument();
$document->loadHTML((string)$tidy);
0 голосов
/ 04 июня 2011

Никогда не используйте RegEx с HTML.

Придерживайтесь DOMDocument и, возможно, подавите ошибку, если она не вызывает дальнейших проблем.

...