我正在寻找一种通过PHP保持HTML代码输出干净的方法。
如果您查看源代码,结果如下:
<section><div class="card">
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in</p>
<a href="#" class="btn btn-primary">Go somewhere</a> </div>
</div>
</section><section><div class="card">
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a> </div>
</div></section>
我希望它看起来像这样:
<section>
<div class="card">
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in</p>
<a href="#" class="btn btn-primary">Go somewhere</a> </div>
</div>
</section>
<section>
<div class="card">
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in</p>
<a href="#" class="btn btn-primary">Go somewhere</a> </div>
</div>
</section>
这是我的php输出代码:
ob_start();
include_once ROOT.'/global/header.php';
print $content_output; // the included files
include_once ROOT.'/global/footer.php';
$output = ob_get_contents();
ob_end_clean();
echo $output;
这是因为我正在搭建一个脚手架,在那里为一个网站创建块。例如,起始页由块2、块7、块1和块5组成。最后,客户得到一个干净的HTML,它由上面提到的块组成。
如果您的PHP完全呈现HTML,为什么要让它看起来好看?这不像任何其他开发人员会查看编译后的HTML内部,对吧?
浏览器并不关心HTML的格式,如果它是有效的HTML,它就是有效的HTML。这也不应该影响你的网页SEO。
在这种情况下,您正在用PHP代码手动编写HTML。您应该避免回显完整的HTML字符串。您可以通过使用尽可能多的内联PHP来做到这一点。例如:
<?php if(//Statement): ?>
<h1><?= $test ?></h1>
<?php endif; ?>
这样您就知道PHP不会影响标记的缩进。
您可以使用DOMDocument来处理&格式化HTML。DOMDocument很难使用&其中大部分可以使用更好的文档。
如果你只想漂亮地打印html,那么像这样的东西应该可以满足你的需求:
$html = '<div>Happy Coding todayyy</div>';
$doc = new DOMDocument($html);
$doc->formatOutput = true;
$cleanHtml = $doc->saveHTML();
你也可以寻找一个html美化程序,但看起来没有任何特别成熟的项目。
我还想补充一点,在每个格式化html的请求上运行DOMDocument会增加额外的开销。更多的cpu周期意味着更多的能量,因此需要注意。不过,您可能不会看到脚本执行时间有任何真正的变化。
一些现有的项目可能会让DOM更容易为您工作。如果DOMDocument不能完全满足你的需求,可以尝试一下(我不100%确定上面的代码会起作用,我也不知道这些转发是否一定能解决你的问题(:
- Voku的simple_html_dom<-端口simple_html_dom已经存在一段时间了。我没有尝试过Voku的港口,但我审查过的他的回购通常质量很好
- ivopetkov的DomDocument扩展<-我认为这个是最成熟的
- scotteh<-的另一个选择对此一无所知
- 我的DomDocument扩展。稳定,小但很好的功能集