0

我正在寻找一种方法来通过 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;

这样做的原因是我正在构建一个脚手架,其中为网站创建块。例如,起始页由 block2、block7、block1 和 block5 组成。最后,客户得到一个干净的 HTML,它由上述块组成。

4

2 回答 2

0

如果您的 PHP 完全呈现 HTML,您为什么希望它看起来不错?它不像任何其他开发人员会查看编译后的 HTML,对吧?

浏览器不关心你的 HTML 是如何格式化的,如果它是有效的 HTML,它就是有效的 HTML。这也不应该影响您网页的 SEO。

如果您在 PHP 代码中手动编写 HTML。您应该避免回显完整的 HTML 字符串。您可以通过尽可能多地使用内联 PHP 来做到这一点。例如:

<?php if(//Statement): ?>
  <h1><?= $test ?></h1>
<?php endif; ?>

这样你就知道 PHP 不会影响标记的缩进。

于 2020-11-28T11:16:55.537 回答
0

您可以使用DOMDocument来处理和格式化 HTML。DOMDocument 很难使用,其中大部分可以使用更好的文档。

如果您想做的只是漂亮地打印 html,那么像这样的东西应该可以满足您的需要:

$html = '<div>Happy Coding todayyy</div>';
$doc = new \DOMDocument($html);
$doc->formatOutput = true;
$cleanHtml = $doc->saveHTML();

您也可以寻找一个html 美化器,但看起来没有任何特别成熟的项目。

我还想添加在每个请求上运行 DOMDocument 以格式化 html 会增加额外的开销。更多的 cpu 周期意味着更多的能量,所以要注意一些事情。不过,您可能不会看到脚本执行时间有任何真正的变化。

一些现有的项目可能会使 DOM 更容易为您工作。如果 DOMDocument 不能完全满足您的要求,可能会尝试的事情(我不是 100% 确定上面的代码会解决问题,我也不知道这些 repos 中的任何一个是否可以肯定地解决您的问题):

于 2020-11-28T13:12:54.003 回答