自动缩进HTML代码并显示它


Auto-indent HTML Code and Display It

在PHP中显示HTML代码时,如果我想缩进标记,最好的方法是什么?

例如,

<?php
$html = '<div><p><span>some text</span></p></div>';
echo htmlspecialchars($html);
?>

将给出CCD_ 1。

相反,我想展示一些类似的东西

<div>
    <p>
        <span>some text</span>
    </p>
</div>

您可以使用htmLawed
http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/

这将是您的代码:

<?php
  require("htmLawed/htmLawed.php");
  echo "<pre>";
  echo htmlspecialchars(
         htmLawed('<div><p><span>some text</span></p></div>', array('tidy'=>4))
       );
  echo "</pre>";
?>

您可能还想使用HEREDOC。

 $html = <<<NICE
 <div>
     <p>
         <span>some text</span>
     </p>
 </div>
 NICE;
 echo "<pre>";
 echo htmlspecialchars( $html );
 echo "</pre>";

您可能需要了解PHP Tidy扩展。

Tidy是Tidy HTML清理和修复实用程序的绑定,它不仅允许您清理和以其他方式操作HTML文档,还允许您遍历文档树。

如果你知道你希望它如何输出(比如你的字符串在制作时会是什么样子),你可以很容易地这样做:

$html = "<div>'n't't<p>'n't't't<span>some text</span>'n't't</p>'n't</div>";

不过,一定要使用双引号,而不是单引号。

源代码中的输出:

<div>
    <p>
        <span>some text</span>
    </p>
</div>

如果你想自动完成,那么你可能需要等待另一个答案,我真的不知道有多少regex可以帮助,而且我也不使用DOM(甚至不确定它是否适用于这种情况)。