我有这段代码:
<? 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中看起来都很好;我喜欢干净的输出。
答案 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 }?>