Intereting Posts

Как предотвратить расширение DOMXPath объектов HTML?

Я использую DOMDocument и DOMXPath в PHP для поиска элементов в документе HTML. Этот документ содержит объекты HTML, такие как & nbsp; и я хотел бы, чтобы эти объекты сохранялись в выходе XPath.

$doc = new DOMDocument(); $doc->loadHTML('<html><head></head><body>&nbsp;Test</body></html>'); $xpath = new DOMXPath($doc); $nodes = $xpath->query('//body'); foreach($nodes as $node) { echo $node->textContent; } 

Этот код производит следующий вывод (UTF-8):

 [space]Test 

Но я хотел бы иметь это:

 &nbsp;Test 

Возможно, это имеет какое-то отношение к LibXML, который использует PHP внутри себя, но я не мог найти никакой функции, которая сохраняет объекты HTML.

У вас есть идея?

Related of "Как предотвратить расширение DOMXPath объектов HTML?"

XPath всегда видит представление XML-документа, в котором ссылки на сущности были расширены. Единственный способ предотвратить это – предварительно обработать XML-документ, заменив ссылки на сущности тем, что не будет расширяться, например change &nbsp; до §nbsp; ,

Процессор XPath не знает, был ли обозначен символ без торможения, как &nbsp; или как &#xA0;' -- the character is always provided to it as a character entity -- &#xA0;' -- the character is always provided to it as a character entity -- `.