Озадачен простой ошибкой XPath - PullRequest
1 голос
/ 18 июня 2011
<?php
$response = 
'<style><div id="subhead"></div></style>';
//echo $response;

$doc = new DOMDocument();

$doc->loadHTML($response);  

$finder = new DomXPath($doc);

$term_select = $finder->query('//div[@id="subhead"]');

var_dump($term_select->item(0));

?>

var_dump получает NULL, и я также получаю это предупреждение в строке 8:

Warning: DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 1 on line 8

Обратите внимание, что это не мой HTML (я очищаю), поэтому изменение HTML невариант.

Ответы [ 2 ]

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

Проблема в том, что вы не можете иметь элемент DIV вместо элемента STYLE, поэтому при использовании loadHTML он не может проверить HTML.Если бы вы сделали $doc->saveHTML();, вы бы быстро поняли, что он оборачивает <div id="subhead"> в CDATA.

. Чтобы решить проблему, используйте loadXML() вместо.

$doc->loadXml($response);
2 голосов
/ 18 июня 2011

loadHTML() ожидает найти HTML в строке, но это недопустимый HTML, поэтому строка не загружается должным образом. XPath не будет иметь этого элемента <div> для доступа. Попробуйте loadXML() вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...