Estoy usando DOMDocument y DOMXPath en PHP para encontrar elementos en un documento HTML. Este documento contiene entidades HTML como & nbsp; y me gustaría que estas entidades se conservaran en la salida XPath.¿Cómo evitar que DOMXPath expanda entidades HTML?
$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;
}
Este código produce la siguiente salida (UTF-8):
[space]Test
Pero me gustaría tener esto:
Test
Tal vez tenga algo que ver con LibXML que PHP lo usa internamente, pero no pude encontrar ninguna función que preserve las entidades HTML.
¿Tienes una idea?
'[space]' no es UTF-8. ¿Estás seguro de que es U + 0020 y no U + 00A0? – Alohci
@Alohci: Sí, tienes razón, es U + 00A0. Solo quería dejar en claro que la salida se muestra con espacios en blanco en lugar de la entidad nbsp. – chrisklaussner
@Dimitre: Lo siento, pero esta es una pregunta específica de XPath. Se trata de la salida de una consulta XPath. – chrisklaussner