Я использую DOMDocument и DOMXPath в PHP для поиска элементов в документе HTML. Этот документ содержит объекты HTML, такие как & nbsp; и я хотел бы, чтобы эти объекты сохранялись в выходе XPath.
$doc = new DOMDocument(); $doc->loadHTML('<html><head></head><body> Test</body></html>'); $xpath = new DOMXPath($doc); $nodes = $xpath->query('//body'); foreach($nodes as $node) { echo $node->textContent; }
Этот код производит следующий вывод (UTF-8):
[space]Test
Но я хотел бы иметь это:
Test
Возможно, это имеет какое-то отношение к LibXML, который использует PHP внутри себя, но я не мог найти никакой функции, которая сохраняет объекты HTML.
У вас есть идея?
XPath всегда видит представление XML-документа, в котором ссылки на сущности были расширены. Единственный способ предотвратить это – предварительно обработать XML-документ, заменив ссылки на сущности тем, что не будет расширяться, например change
до §nbsp;
,
Процессор XPath не знает, был ли обозначен символ без торможения, как
или как  ' -- the character is always provided to it as a character entity --
 ' -- the character is always provided to it as a character entity --
`.