He intentado analizar el código HTML5 para poder establecer atributos / valores dentro del código, pero parece que DOMDocument (PHP5.3) no admite etiquetas como <nav>
y <section>
.
¿Hay alguna forma de analizar esto como HTML en PHP y manipular el código?
Código para reproducir:
<?php
$dom = new DOMDocument();
$dom->loadHTML("<!DOCTYPE HTML>
<html><head><title>test</title></head>
<body>
<nav>
<ul>
<li>first
<li>second
</ul>
</nav>
<section>
...
</section>
</body>
</html>");
Error
Advertencia: DOMDocument :: loadHTML (): Tag nav no válido en Entity, línea: 4 en /home/wbkrnl/public_html/new-mvc/1.php en la línea 17
Advertencia: DOMDocument :: loadHTML (): sección de etiqueta no válida en Entity, línea: 10 en /home/wbkrnl/public_html/new-mvc/1.php en la línea 17
php
html
domdocument
Klaas Sangers
fuente
fuente
loadHTML($HTML5)
devuelve FALSO (falla)! Necesito cambiar las nuevas etiquetas a DIV ... No es solo un problema de "advertencias" en mi pantalla.Respuestas:
No, no hay forma de especificar un tipo de documento en particular para usar, o de modificar los requisitos del existente.
Su mejor solución viable será deshabilitar el informe de errores con
libxml_use_internal_errors
:fuente
loadHTML($HTML5)
devuelve FALSO (falla)! Necesito cambiar las nuevas etiquetas a DIV ...loadHTML
ahora acepta etiquetas HTML5.Tu tambien puedes hacer
fuente
@
olibxml_*
)Puede filtrar los errores que obtiene del analizador. Según otras respuestas aquí, desactive el informe de errores en la pantalla y luego repita los errores y muestre solo los que desee:
Aquí hay un
print_r()
error de un solo:Al hacer coincidir el
message
y / o elcode
, estos se pueden filtrar con bastante facilidad.fuente
No parece haber una forma de eliminar las advertencias pero no los errores. PHP tiene constantes que se supone que hacen esto, pero no parecen funcionar. Esto es lo que DEBERÍA funcionar, pero no porque (¿error?) ....
http://php.net/manual/en/libxml.constants.php
fuente
Esto funcionó para mí:
Si necesita la etiqueta de encabezado, cambie el encabezado con una etiqueta div y use una identificación. Por ejemplo:
No es la mejor solución, pero dependiendo de la situación puede resultar útil.
Buena suerte.
fuente
Las etiquetas HTML5 casi siempre usan atributos como id, class, etc. Entonces el código para reemplazar será:
fuente