PHPでDOM拡張を使用してHTMLドキュメントを作成していますが、出力を読みやすくするために新しい行とインデントを使用して出力したい、私がやった多くのテストから:PHP「きれいな印刷」HTML(Tidyではない)
- "formatOutputは=真"(saveHTMLでまったく動作しない)、のみsaveXML()
- 私はsaveXML()、それはまだのみを使用した場合でも"preserveWhiteSpace = false"であっても、loadHTML()に含まれる要素ではなく、DOMを介して作成された要素に作用します。
誰かが違ったことを知っていたら、どうやって彼らが働くか知りたいと思っています。
DOMドキュメントがあり、HTMLを出力するためにsaveHTML()を使用しています。それが有効であることを私が知っているDOMから来ているので、何らかの方法でそれを "整頓"するか検証する必要はありません。
私はDOM拡張から受け取った出力からきれいにフォーマットされた出力を得る方法を探しています。
NB。あなたが推測しているかもしれませんが、私はTidyエクステンションをa)もっと必要とします(マークアップはすでに有効です)。b)実際にHTMLコンテンツを変更します。 HTML 5のdoctypeといくつかの要素)。
フォローアップ:DOM拡張が動作しなかった理由
OK、答えの助けを借りて、私が出て働いてきたの下に。与えられた例は動作しますが、それでも私のコードでは動作しませんでした。 thisコメントの助けを借りて、isWhitespaceInElementContent()が真であるテキストノードがあれば、そのポイントを超えて書式設定が適用されないことがわかりました。これは、preserveWhiteSpaceがfalseであるかどうかにかかわらず発生します。解決策は、これらのノードをすべて削除することです(実際のコンテンツに悪影響を及ぼすかどうかはわかりませんが)。
ありがとうございます。あなたの例とphp.netのコメントで私は問題を解決しました(上記のフォローアップを参照)。 –
DOMのソリューションはかなり重いようです。それはどれくらい速いか遅いですか?より小さなスニペットで、またはページ全体でのみ使用する価値がありますか? – sumid
''のような値を持たないタグで 'saveXML()'を使うときに問題があります。 ' 'それを修正できる方法はありますか? –