Un poco nuevo para el análisis de PHP aquí, pero parece que no puedo obtener que DomDocument de PHP devuelva lo que es claramente un nodo identificable. El HTML cargada vendrá de la 'red por lo que no necesariamente puede garantizar el cumplimiento de XML, pero yo intente lo siguiente:PHP HTML DomDocument getElementById problems
<?php
header("Content-Type: text/plain");
$html = '<html><body>Hello <b id="bid">World</b>.</body></html>';
$dom = new DomDocument;
$dom->preserveWhiteSpace = false;
$dom->validateOnParse = true;
/*** load the html into the object ***/
$dom->loadHTML($html);
var_dump($dom);
$belement = $dom->getElementById("bid");
var_dump($belement);
?>
Aunque recibo ningún error, sólo recibirá el siguiente como salida:
object(DOMDocument)#1 (0) {
}
NULL
¿No debería ser capaz de buscar la etiqueta <b>
ya que de hecho tiene una identificación?
Tengo validateOnParse. setIdAttribute solo se aplicaría a establecer y luego recuperar? Sin embargo, una vez más, el HTML será proporcionado por la web, por lo que estoy a su merced, pero solo estoy probando un ejemplo. HTML5 ni siquiera tiene una DTD, ¿sí? – Xailor
"setIdAttribute solo se aplicaría para establecer y luego recuperar?" -> Sí. HTML5 todavía no está terminado, por lo que no debería tener una DTD todavía. –
DTD sería '', pero solo llamar a '$ dom-> validate()' también funcionaría.Preséntese a los errores o intente generar HTML válido (este último es más difícil de lo que parece ... :)) – Wrikken