PHP中的HTML缩进

时间:2013-02-13 05:34:12

标签: php html indentation

我有这段代码:

<? if(is_home() || is_archive()): ?>
<ul>
  <li><a href="<?= site_url('/category/one') ?>">One</a></li>
  <li><a href="<?= site_url('/category/two') ?>">Two</a></li>
  <li><a href="<?= site_url('/category/three') ?>">Three</a></li>
</ul>
<? endif ?>

产生此输出:

  <ul>
  <li><a href="http://domain/...">One</a></li>
  <li><a href="http://domain/...">Two</a></li>
  <li><a href="http://domain/...">Three</a></li>
</ul>

请注意<ul>缩进。如果我使用以下内容,则按预期输出:

<? if(is_home() || is_archive()): ?><ul>
...

我知道这是微不足道的,但我想知道是否有办法做到这一点,所以它在PHP和HMTL中看起来都很好;我喜欢干净的输出。

2 个答案:

答案 0 :(得分:4)

好。 PHP在结束标记\n之后会占用一个换行符(\r\n?>)。
http://php.net/manual/en/language.basic-syntax.instruction-separation.php

中所述
  

[...]块的结束标记将包括紧接着的新行(如果有的话)。

在那里的评论中也提到了一种解决方法。如果你要在?>之后添加一个空格,意味着的序列? &gt; SPACE \ n < / kbd>,换行符将保留其目的。 - 但是你依靠另一个看不见的角色来获得理想的效果。

答案 1 :(得分:2)

首先,你为什么要关心你的HTML格式是否笨拙?我理解可能是出于可读性目的,但有一些html格式化工具可用:例如http://www.freeformatter.com/html-formatter.html

如果您担心html代码有效,请尝试使用适当的IDE或html验证程序:例如: http://validator.w3.org/

最后,你的问题的答案: 将代码的开头更改为:

<?php if(is_home() || is_archive()){ echo "\n" ?><ul>
  <li><a href="<
...
<?php }?>