Heredoc:常用的“EOT”实际上是啥意思?

Posted

技术标签:

【中文标题】Heredoc:常用的“EOT”实际上是啥意思?【英文标题】:Heredoc: what does the commonly used 'EOT' actually mean?Heredoc:常用的“EOT”实际上是什么意思? 【发布时间】:2011-07-12 15:02:06 【问题描述】:

php 的Heredoc examples 似乎总是使用 EOT(有时是 EOD)作为分隔字符串,而实际上这里可以使用任何字符串。这有效:

$mystring = <<<EOT
     Foo
     Bar
     Baz
EOT;

虽然这也有效:

$mystring = <<<MONKIES
     Foo
     Bar
     Baz
MONKIES;

EOT 是否真的代表某物,如果是,是什么?

【问题讨论】:

“文本结尾”或者可能是“磁带结尾”(从过去使用磁带进行数据存储是标准的)? 【参考方案1】:

​代表“文本结束”。​

【讨论】:

文本的开头会不会更合乎逻辑? :) 另外,EOD 代表什么? 不,因为它标志着结束。您在顶部看到的是一个继续信号,直到发现 EOT。 EOD 是数据结束。【参考方案2】:

实际上end of text 将是ETXEOTend of transmission

参考:ASCII - Wikipedia

【讨论】:

@NisseEngström en.wikipedia.org/wiki/End-of-tape 重定向到文件末尾并且是 EOF【参考方案3】:

我更喜欢参考 TRON 并使用“EOL”(行尾)。

【讨论】:

这很有趣。如果可以的话,我会把它标记为最喜欢的。 :D【参考方案4】:

简答

可能 End Of Text和End Of Data.

长答案

唯一能明确告诉您缩写词含义的人是原始(和当前)文档的作者。但是基于early version of the documentation 提到“这里是文档 text”,我认为可以合理地假设 EOT 的意思是 Text >.

同样,current documentation 对 Nowdocs 和 SGML &lt;![CDATA[ ]]&gt; 部分进行了比较,因此一个合理的假设是 EOD 代表 Data 的结束。

当然,ASCII standard 中有一个 EOT 的定义,但它指的是 单个 字符 0416 而这个除非明确说明,否则定义不会转移到其他任何东西。在这方面,我们可以从 ASCII 标准中学到的唯一一点是 三个 字母 EOT 的编码。

这当然都是猜测,但这是我能想到的唯一合理的解释。 就个人而言,我更喜欢使用单个下划线 (&lt;&lt;&lt;_) 来避免整个问题。

【讨论】:

以上是关于Heredoc:常用的“EOT”实际上是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

php EOF(heredoc)使用

gb是啥意思 gb是啥

全面解读php面试-常量及数据类型

typedef是啥意思?

bash中的heredoc里面的范围,我的$ PORT变量不起作用

APPLICATION是啥