>  기사  >  php教程  >  php DOMDocument 递归 格式化缩进HTML文档,

php DOMDocument 递归 格式化缩进HTML文档,

WBOY
WBOY원래의
2016-06-13 08:45:431635검색

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();

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.