2017-11-11 92 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

在您链接到的文档页面上,它说:“如果存在一个块,则该块的结束标记将包括紧接的尾随换行符。”我把它看作是“如果在块的结束标记之后有一个换行符,则该换行符被视为结束标记的一部分”;由于换行符是结束标记的“一部分”,因此它不会在输出中结束。这是否清除你的困惑? –