2011-07-01 131 views

回答

11

你不能。 HEREDOC的意义在于它内部的任何东西都将成为字符串的一部分。它的存在是为了避免将PHP元字符(包括注释)视为如此。你放进它里面的任何东西都会出现在字符串中(因此在这种情况下,它会回应到输出指向的任何地方)。

如果输出是HTML,那么您可以在其中包含HTML注释。这仍将出现在输出中,但解析HTML的任何内容都会将其视为注释。同样,如果内容是JS,那么您可以使用JS注释等等。

3

heredoc分隔符之间的所有内容都按字面解释,这就是heredoc语法的要点。任何HTML注释也会被输出,PHP不关心浏览器会忽略它们。

2

这取决于您输出的类型为echo。如果您将该数据回显到HTML页面,则可以使用<!-- -->语法,并且浏览器会将其作为注释来看。如果你输出到一个纯文本文件,heredoc中的所有内容都将被输出(实际上,编写HTML时也会输出所有内容,只是浏览器会解释HTML注释)。

当我使用定界符语法,需要内部注释信息​​,我通常使用(PHP样式)之前评论的定界符,并通过他们的行号,相对引用定界符内的任何具体线路:

/* Write out default INI file. 
* L002: Log level. Possible values: debug,info,warning,error. 
*/ 
echo <<<EOF 
[global] 
logging = error 
... 
EOF 

希望有所帮助。

-2

其实,你不能在字符串中间使用PHP注释(既不用双引号也不用单引号,也不能用字符串)。他们将字面上显示。

在一些罕见的情况下,模拟注释并稍后从字符串中删除它们可能会很有用。例如,如果您正在创建某种模板引擎,它可能很有用。但是,在大多数情况下,你不应该这样做,因为这是不好的做法。

您可以建立使用“\ r \ n”个(使用引号的换行符),并把在同一行评论后的字符串,例如您的字符串 echo "line1\r\nline2"; //this outputs two lines

+0

为了让它更清晰,我改进了我的答案,因为经过2年的沉默后,有人开始给我降低薪水,所以我需要以某种方式处理:-) – Karolis

0

其实,在回声里面有一种迂回的评论方式。

您可以使用下面的语法

<?php 
'.(/*comment here*/ NULL).' 

这条线将被解读为内PHP和可以包含注释。必须包含NULL,因为内部php中的所有内容都需要一个值。 NULL是最方便的选择,因为你实际上不需要一个值,只是一个评论。

+0

但问题是关于在heredoc块中添加注释 – iainn