【问题标题】:Clean HTML Sourcecode with PHP使用 PHP 清理 HTML 源代码
【发布时间】:2020-11-28 11:08:21
【问题描述】:

我正在寻找一种方法来保持通过 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,它由上述块组成。

【问题讨论】:

  • 没有看到实际构建 html 的代码,我们无能为力。

标签: php htmlcleaner


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 这样做的原因是我正在构建一个脚手架,其中为网站创建块。例如,起始页由 block2、block7、block1 和 block5 组成。最后,客户得到一个干净的 HTML,它由上述块组成。
  • meh ... 有时我必须在浏览器中检查 html 以找出我做错了什么:是嵌入式 js、css、html 还是 php 本身?在这种情况下,后端 php 的干净(可读)输出会帮助...很多。
  • 这种技术使调试更容易,因为它最大限度地减少了这里经常出现的意大利面条代码。它鼓励逻辑与内容的分离。它使添加 javascript 观察者变得更加容易。它使输出的缩进与您看到的缩进匹配。双赢。
【解决方案2】:

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

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

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

你也可以找html beautifier,但好像没有什么特别成熟的项目。

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

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

【讨论】:

猜你喜欢
  • 2016-06-30
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多