Estoy usando la extensión DOM en PHP para compilar algunos documentos HTML, y quiero que la salida tenga un buen formato (con nuevas líneas y sangrías) para que sea legible, sin embargo , a partir de las muchas pruebas que he hecho:PHP HTML "bonita impresión" (no ordenado)
- "formatOutput = true" no funciona en absoluto con saveHTML(), solo saveXML()
- Incluso si utilicé saveXML(), que todavía sólo funciona en elementos creados a través del DOM, no elementos que se incluyen con loadHTML(), incluso con "preserveWhiteSpace = false"
Si alguien sabe de otra manera, me gustaría saber cómo lo hicieron funcionar.
Tengo un documento DOM y estoy usando saveHTML() para generar el código HTML. Como proviene del DOM, sé que es válido, no es necesario "poner en orden" o validarlo de ninguna manera.
Estoy simplemente buscando una manera de obtener una salida con formato agradable desde la salida que recibo de la extensión DOM.
NB. Como habrás adivinado, no quiero usar la extensión Tidy como a) hace mucho más que yo también la necesito (el marcado ya es válido) yb) realmente hace cambios al contenido HTML (como el tipo de documento HTML 5 y algunos elementos).
Seguimiento:
bien, con la ayuda de la respuesta a continuación he trabajado por qué la extensión DOM no estaba funcionando. Aunque el ejemplo dado funciona, todavía no funcionaba con mi código. Con la ayuda del comentario this encontré que si tiene cualquier nodo de texto donde isWhitespaceInElementContent() es verdadero, no se aplicará ningún formato más allá de ese punto. Esto sucede independientemente de si preserveWhiteSpace es falso o no. La solución es eliminar todos estos nodos (aunque no estoy seguro si esto puede tener efectos adversos sobre el contenido real).
Gracias. Con tus ejemplos y los comentarios en php.net resolví el problema (ver seguimiento más arriba). –
La solución con DOM me parece bastante pesada. ¿Qué tan rápido o lento es? ¿Vale la pena usarlo también en fragmentos pequeños, o solo en toda la página? – sumid
Existe un problema al usar 'saveXML()' con algunas etiquetas sin valor como '' lo convierte a ' '¿hay alguna manera de solucionarlo? –