2013-02-13 76 views
0

缩进我有这样的代码:HTML里面的PHP

<? 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;我喜欢干净的输出。

+3

PHP在关闭标记'?>'后吃了一个换行符。为什么之前有空间,不知道。 – mario 2013-02-13 05:36:02

+0

所以我想唯一的办法是把开幕标签放在同一条线上或打回两次,或者我错过了什么? – elclanrs 2013-02-13 05:37:24

+0

我觉得你可以做的大部分事情来整理输出会混淆实际的代码,这更重要。 – Marty 2013-02-13 05:38:57

回答

4

好。 PHP在结束令牌?>后吃了一条换行符(\n\r\n)。
http://php.net/manual/en/language.basic-syntax.instruction-separation.php

提到[...]的块的结束标记将包括立即尾随的换行符如果存在。

解决方案中还提到了一种解决方法。如果您要在?>之后添加空格,意思是的序列?>SPACE\ n,换行符会保留其目的。 - 但是,你会依靠另一个无形的角色来获得理想的效果。

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 }?> 
+0

+1有效的解决方案,但它并没有太大的帮助。我的意思是PHP现在看起来很丑。我将只保留HTML。这真的没有关系,这基本上是出于好奇心的问题。 – elclanrs 2013-02-13 05:48:50

+0

...好的。你可以吃你的蛋糕,但你不能吃它;-) – Tucker 2013-02-13 05:52:46