惊人的问题。
到目前为止,9 个答案和 3 个 cmets,看起来没有人费心阅读问题正文,但只是重复了一些由标题中的关键字触发的福音——这是在 stackoverflow 的祝福网站上回答问题的最首选方式。
但问题并不是那么简单/单层。
我不得不承认,它本身就是模棱两可的。所以,我们必须把它挖出来。
1) 如何缩进 HTML?
使用模板,伙计。使用模板。唯一的答案。
2) 函数是否有任何解决方案可以以某种方式知道要添加多少 \t 或空格,或者以某种方式自动缩进 html?
当然没有。
PHP 对 HTML、缩进等一无所知。
尤其是当 HTML 还没有准备好时(!)
3) 如果我添加另一个容器 DIV,这不会产生正确缩进的代码。
问题的关键问题。
提出问题的目的。
但最难的。
答案是我完全不同意的那种,呵呵:
虽然标签的相对顺序很重要,但对于生成的大型 HTML,可以将一些块移出一行:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>Hello</h1>
<div>
<!-- news list -->
<div>
<ul>
<li>1..</li>
<li>2..</li>
<li>3..</li>
<li>4..</li>
</ul>
</div>
<!-- /news list -->
</div>
<div>
<!-- pagination -->
<ul>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
<li>Black</li>
</ul>
<!-- /pagination -->
</div>
</body>
</html>
它可以让你在有意义的块中有适当的缩进,同时保持主 HTML 的顺序。
作为副作用,它会将您的线条保留在屏幕上:)
为了在子模板中保持良好的缩进,我强烈建议使用基于 PHP 的模板。看在上帝的份上,不是丑陋的 HEREDOC!
以下是 PHP 模板要遵循的一条规则:
始终将 PHP 块放在左侧。 仅此而已。
为了保持 PHP 嵌套块之间的缩进,只需将它们缩进 <? ?>
例子:
<ul>
<? foreach ($thelist as $color): ?>
<li>
<? if ($color == $current): ?>
<b><?=$color?></b>
<? else ?>
<a href="?color=<?=$color?>"><?=$color?></a>
<? endif ?>
</li>
<? endforeach ?>
</ul>
这将生成正确缩进的 HTML,同时保持模板中 HTML 和 PHP 的顺序,使开发人员在开发和调试时的生活更加轻松调试。
不要听任何人说“根本不需要缩进代码!”。他们只是业余爱好者,而不是真正的开发者。任何了解调试 是什么的人,以及在调试代码时遇到困难的人都会告诉您,适当的缩进是必不可少的。