是否有可能自动缩进PHP输出的HTML源


Is it possibly to automatically indent HTML source outputted by PHP?

作为一个完美主义者,我喜欢有有效的&PHP输出正确缩进的HTML。

我有一些复杂的web应用程序,有it头脑的用户,他们喜欢能够查看源代码,而不是看到乱码。

目前我使用我写的这个函数:

function nl($tabs = 0)
{
    return "'r'n" . str_repeat("'t", $tabs);
}

像这样使用它来添加换行符和所需的制表符数量:

if(array_key_exists('field', $row)){
    echo '<td>' . $row['field'] . '</td>' . nl(4);
}

是否有任何内置到PHP,或者有一个类,我可以使用自动做这个缩进?

使用输出缓冲区时,您可以使用DOMDocument并将formatOutput设置为true,然后将缓冲区刷新到客户端/浏览器。

ie:

libxml_use_internal_errors( TRUE );
$dom = new DOMDocument();
$dom->validateOnParse = FALSE;
$dom->preserveWhiteSpace = TRUE;
$dom->formatOutput = TRUE;
$om->loadHTML( mb_convert_encoding( ob_get_contents(), 'UTF-8' ) );
libxml_clear_errors();
/*
 perform any other operations on dom elements you wish
*/
$buffer = $dom->saveHTML();
ob_end_clean();
echo trim( $buffer );/* send data to client/browser */