2009-05-04 65 views

回答

17

如果要從PHP代碼塊切換到純文本輸出,則需要結束標記。

下面是一個例子:

<?php 
    // PHP code block 
?> 
<!-- plain text output and not processed by PHP --> 
</body> 
+0

謝謝,但超越? – Graviton 2009-05-04 09:00:22

+5

除此之外?決不。 – alexn 2009-05-04 09:02:10

3

當你的PHP塊之後要輸出非PHP代碼,這只是必要的。

1

當你不只是使用PHP腳本:-)

9

順便說一句,如果你想知道你被跳過的結束標記阻止了什麼錯誤。由於Zend的解釋沒有詳細說明。

它不是PHP所必需的,並且省略了它可以防止意外將尾隨白色空間注入到響應中。

這意味着如果您想使用header()將某人重定向到某個其他位置或以任何方式更改HTTP標頭,那麼如果某些文件結束,您將無法並且會收到錯誤喜歡這個。

} 
?> 
//space here 

因爲然後這個空間將作爲內容輸出到網站,然後你不能修改標題。

1

作爲一般規則,我總是添加結束標記,因爲這是我問號手指全天鍛鍊的唯一時間。那個可憐的問號在PHP中沒有愛;-)

但嚴重的是,當不需要時添加結束標記實際上會導致真正令人困惑的錯誤。因爲這個,我整個下午都把我的頭髮拉出來。麻煩通常是因爲在結束標記之後有空格,您不容易看到,但它們被解釋爲響應主體的一部分。如果您將此文件包含在希望稍後發送自定義標頭的另一個腳本中,這是個壞消息。腳本開始發送響應正文後,您無法發送標題信息,因此這些不可見的空格會導致腳本失敗。

+2

不要忘記三元運算符:$ var = expr? true-val:false-val; – 2009-05-04 13:18:05

5

這是我個人的 「規則」:

  • 文件只PHP代碼:永遠不會結束標籤
  • 文件用PHP用別的東西(即HTML)混合:始終結束標記