2013-02-13 74 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