美化HTML存储在PHP中的字符串中

Hen*_*son 2 html php

我在变量$html中有一个包含缩小的HTMl代码的字符串,所有这些都在一行中,如:

$html = '<body><div><p>hello</p><div></body>';
Run Code Online (Sandbox Code Playgroud)

如何美化/漂亮打印HTML,以便我的变量变为:

 $html = '<body>
             <div>
               <p>hello</p>
             <div>
          </body>';
Run Code Online (Sandbox Code Playgroud)

我知道整齐的扩展是可能的,但如果没有扩展,怎么办呢.

编辑:请阅读问题.我不是问如何通过一些外部网站美化HTML代码.我问如何在PHP中实现它,特别是针对字符串变量.

Ale*_*rei 7

使用DomDocument我们加载传递LIBXML_HTML_NOIMPLIED标志的html,
这将阻止该loadHTML方法添加额外的html包装器.

我们保存为XML以获得良好的缩进,同时传递$dom->documentElement参数以防止XML标头.

$html = '<body><div><p>hello</p><div></body>';

$dom = new DOMDocument();

$dom->preserveWhiteSpace = false;
$dom->loadHTML($html,LIBXML_HTML_NOIMPLIED);
$dom->formatOutput = true;


print $dom->saveXML($dom->documentElement);
Run Code Online (Sandbox Code Playgroud)

这将输出

<body>
  <div>
    <p>hello</p>
    <div/>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

请注意,这HTML是固定的,因为第二个div应该是一个结束标记,我假设.

如果我们将right HTML作为输入字符串传递,则输出将根据您的需要而定

$html = '<body><div><p>hello</p></div></body>';

<body>
  <div>
    <p>hello</p>
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)