> Faqs > Cómo evitar el error "invalid in Entity" al procesar DOMDocument::loadHTML()

Cómo evitar el error "invalid in Entity" al procesar DOMDocument::loadHTML()

Tengo otra duda sobre DOMDocument de PHP que igual me podéis ayudar también.

Resulta que en mi documento no me reconoce algunas etiquetas que no existen en el HTML. Son componentes (web components) y están en el código HTML que quiero procesar con loadHTML(). Realmente me da igual que no reconozca las etiquetas, porque no quiero hacer nada con ellas. Solo desearía que no diese errores para poder continuar el script.

El error que me aparece es este:

DOMDocument::loadHTML(): Tag site-nav-responsive invalid in Entity, line: 134

¿Qué puedo hacer para que DOMDocument no se atasque y se pare al detectar un error en el HTML cargado?

Respuestas

El error "invalid in Entity" te sale cuando alguna etiqueta no la sabe procesar. Puede ser con etiquetas desconocidas como te ocurre a ti, custom elements personalizados de web conponents, pero a veces también ocurre con etiquetas normales del HTML5, dependiendo de la versión de PHP.

Lo que puedes hacer es desactivar los errores por etiquetas no reconocidas. Esto lo puedes hacer al invocar al método loadHTML() y como segundo parámetro pasarle LIBXML_NOERROR que es una constante que informa a PHP (concretamente a Libxml) que no debe detenerse en errores de tags que no se reconozcan.

$doc = new DOMDocument();
$doc->loadHTML($docBody, LIBXML_NOERROR);

Gracias a LIBXML_NOERROR PHP se abstendrá de reportar los errores en el método loadHTML().

Julian
1147 49 87 46
Yeah!!! funcionó!