2017-11-11 93 views
0

我正在閱讀PHP手冊。我在手冊頁上遇到了一個句子(URL:Instruction separation)。有這個說法頁第一段:PHP手冊正在談論哪些「拖尾的換行符」?這只是混淆手動閱讀器和PHP學習者。請清除混淆

同C或Perl,PHP要求在每個語句結束時 分號結束指令。一個 PHP代碼塊的結束標記自動意味着一個分號;您不需要有一個 分號終止PHP塊的最後一行。 塊的結束標記 將包含緊接的尾隨換行符,如果其中一個爲 存在。

我明白了一切寫在上面段落除了最後強調句子即

用於該塊的結束標記將包括立即尾隨 換行符如果存在。

這句話是什麼意思?這句話意味着什麼?

這句話在我腦海中造成了困惑和疑惑。

  • 「Trailing Newline」在這裏意味着什麼?
  • 「換行符」「換行」,HTML轉義序列字符"\n"<br>的意義在這種情況下一樣嗎?或者是其他東西?
  • 「拖尾換行符」在這裏意味着什麼?換行符是在關閉PHP標籤(?>)之前出現的換行符,還是在關閉PHP標籤(?>) 後面出現的換行符?

有人請用簡單,清晰和易於理解的語言回答我的所有問題。 如果你解釋一些演示這個概念的工作代碼例子,那將會好得多。

注:我已經提到了already asked question on stackoverflow about this但它的答案並不令人滿意,它不完整和模糊。所以,請不要將我的問題標記爲it的重複項。謝謝。

+0

查看https://stackoverflow.com/a/27102974/661872 –

+0

@勞倫斯·凱倫:那個答案不那麼清楚。它並不清楚我所有的疑慮。我需要更多細節和準確的答案來解決我的疑惑。謝謝。 – user2839497

回答

1

基本上說,如果你的代碼中有?>然後在下一行輸出,那麼在那裏的輸出中就不會有換行/換行/ \n

foo 
<?php /* whatever */ ?> 
bar 

將輸出

foo 
bar 

所以即使有三行代碼,只有兩個輸出線。 請注意,如果您在該第二行上的?>之後添加空格,則會出現一行,並且在foobar之間只有一個空格。這就是文檔中「立即」部分的含義。

爲了回答您的具體問題:

究竟什麼是「尾隨的換行符」這裏是什麼意思?

這意味着直接在?>結束標記之後開始新行。

是「尾隨的換行符」的意思,「換行」,HTML轉義序列字符"\n"<br>在這種情況下一樣嗎?或者是其他東西?

的「換行符」是換行/換行/ \n認爲「路徑」(自帶直接後)?>結束標記。所以換行,換行和\n的意思基本上是一樣的東西。它確實是而不是的意思是<br>

「拖尾的換行符」在這裏意味着什麼?在關閉PHP標籤(?>)之前換行符或緊接在關閉PHP標籤(?>)之後出現的換行符?

目前換行符標籤?>只是閉幕。這可以在我的例子中看到,?>之前沒有新行

用於該塊的結束標記將包括立即尾隨的換行符如果存在。

我明白了一切寫在除最後前款強調句即

什麼是這個意思是:如果關閉標籤是由一個換行符直接其次,新行被認爲是實際上是結束標籤的一部分。 所以我上面的例子被分析爲:

  1. foo - >輸出 「foo」 的
  2. \n - >輸出一個換行
  3. <?php - >開始處理PHP
  4. /* whatever */
  5. ?>\n - >停止處理PHP
  6. bar - >輸出「bar」
+0

如果是這樣,那麼它與手冊中的陳述相矛盾。正如上一句話中提到的那樣,塊的結束標記將包含緊接的尾隨換行符(即根據您是換行符/換行符/ \ n)(如果存在換行符)。你在回答時說,在結束標記之後的相同尾行(即換行符/換行符/ \ n)不包括在內,它將被PHP結束標記刪除?>請清除混淆並相應地修改你的答案。 – user2839497

+0

在您鏈接到的文檔頁面上,它說:「如果存在一個塊,則該塊的結束標記將包括緊接的尾隨換行符。」我把它看作是「如果在塊的結束標記之後有一個換行符,則該換行符被視爲結束標記的一部分」;由於換行符是結束標記的「一部分」,因此它不會在輸出中結束。這是否清除你的困惑? –