0

我有这个代码:

<? 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 中仍然看起来不错;我喜欢干净的输出。

4

2 回答 2

4

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

[...] 块的结束标记将包括紧随其后的换行符(如果存在)。

那里的评论中还提到了一种解决方法。如果您要在 之后添加一个空格?>,表示一系列? > SPACE \n,则换行符将保留其用途。-- 但是你会依赖另一个隐形角色来获得想要的效果。

于 2013-02-13T05:52:24.753 回答
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 }?>
于 2013-02-13T05:39:20.443 回答