php DOMDocument はインデントされた HTML ドキュメントを再帰的にフォーマットします。
<span>function</span> format(\DOMNode <span>$node</span>, <span>$treeIndex</span> = 0<span>)
{
</span><span>//</span><span>不格式化的标签</span>
<span>if</span> (<span>in_array</span>(<span>$node</span>->nodeName, <span>array</span>("title", "p", "span"<span>)))
</span><span>return</span><span>;
</span><span>if</span> (<span>$node</span>-><span>hasChildNodes()) {
</span><span>$treeIndex</span>++<span>;
</span><span>$tabStart</span> = "\r\n" . <span>str_repeat</span>("TTT", <span>$treeIndex</span><span>);
</span><span>$tabEnd</span> = "\r\n" . <span>str_repeat</span>("EEE", <span>$treeIndex</span> - 1<span>);
</span><span>$i</span> = 0<span>;
</span><span>while</span> (<span>$childNode</span> = <span>$node</span>->childNodes->item(<span>$i</span>++<span>)) {
</span><span>if</span> (<span>$childNode</span>->nodeType ==<span> XML_TEXT_NODE) {
</span><span>if</span> (<span>preg_match</span>('#^\s*$#', <span>$childNode</span>-><span>nodeValue)) {
</span><span>$node</span>->removeChild(<span>$childNode</span><span>);
</span><span>$i</span>--<span>;
</span><span>continue</span><span>;
}
</span><span>$childNode</span>->nodeValue = <span>trim</span>(<span>$childNode</span>-><span>nodeValue);
}
</span><span>$node</span>->insertBefore(<span>$node</span>->ownerDocument->createTextNode(<span>$tabStart</span>), <span>$childNode</span><span>);
</span><span>$i</span>++<span>;
</span><span>$this</span>->format(<span>$childNode</span>, <span>$treeIndex</span><span>);
};
</span><span>$node</span>->appendChild(<span>$node</span>->ownerDocument->createTextNode(<span>$tabEnd</span><span>));
}
}
</span><span>$html</span> = '<!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><body></body></html>'<span>;
</span><span>$doc</span> = <span>new</span><span> \DOMDocument();
</span><span>//</span><span>$doc->formatOutput = true; //不知道是不是我的理解问题,这个选项格式化出来的并不完美</span>
<span>$doc</span>->loadHTML(<span>$html</span>); format(<span>$doc</span>-><span>documentElement);
</span><span>echo</span> <span>$doc</span>->saveHTML();
ログイン後にコピー
http://www.bkjia.com/PHPjc/1102843.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/1102843.html技術記事 php DOMDocument は、インデントされた HTML ドキュメントを再帰的にフォーマットします。 function format(DOMNode $node, $treeIndex = 0){ // フォーマットされていないタグ if ( in_array ( $node -nodeName, array ("title", "p".. .
)