Sto usando l'estensione DOM in PHP per creare alcuni documenti HTML e voglio che l'output sia formattato correttamente (con nuove linee e rientri) in modo che sia leggibile, tuttavia , dai numerosi test che ho fatto:PHP "pretty print" HTML (non Tidy)
- "formatOutput = true" non funziona affatto con saveHTML(), solo saveXML()
- Anche se ho usato saveXML(), è ancora solo funziona sugli elementi creati tramite il DOM, non sugli elementi inclusi con loadHTML(), anche con "preserveWhiteSpace = false"
Se qualcuno lo sa diversamente, mi piacerebbe davvero sapere come l'hanno fatto funzionare.
Quindi, ho un documento DOM e sto usando saveHTML() per emettere l'HTML. Dal momento che proviene dal DOM, so che è valido, non è necessario "Tidy" o convalidarlo in alcun modo.
Sto semplicemente cercando un modo per ottenere un output ben formattato dall'output ricevuto dall'estensione DOM.
NB. Come avrai intuito, non voglio usare l'estensione Tidy come a) lo fa molto di più che ne ho bisogno anche io (il markup è già valido) eb) in realtà apporta modifiche al contenuto HTML (come il doctype HTML 5 e alcuni elementi).
Follow Up:
OK, con l'aiuto della risposta qui sotto ho lavorato perché l'estensione DOM non funzionava. Sebbene l'esempio dato funzioni, non funzionava ancora con il mio codice. Con l'aiuto del commento this ho scoperto che se si hanno nodi di testo in cui isWhitespaceInElementContent() è true, non verrà applicata alcuna formattazione oltre quel punto. Ciò accade indipendentemente dal fatto che preserveWhiteSpace sia o meno falso. La soluzione è rimuovere tutti questi nodi (anche se non sono sicuro che ciò possa avere effetti negativi sul contenuto effettivo).
Grazie. Con i tuoi esempi e i commenti su php.net ho risolto il problema (vedi il seguito sopra). –
La soluzione con DOM mi sembra abbastanza pesante. Quanto è veloce o lento? Vale la pena utilizzarlo anche su piccoli frammenti o solo sull'intera pagina? – sumid
Si è verificato un problema durante l'utilizzo di 'saveXML()' con alcuni tag senza valore come '' lo converte in ' 'c'è un modo per sistemarlo? –