PHP注释标记

3
在Java/JSP的奇妙世界中,您可以使用以下形式的注释:
<%-- anything in here is ignored and does not get sent to the client 
     it can span multiple lines and is useful for commenting out blocks
     of JSP, including tags and HTML:
     <c:if test="${some.condition}">
       <p>All this is inside the comment</p>
     </c:if>
     <!-- this HTML comment is itself commented out of the JSP so will not be sent to the client --!>
--%>
<!-- but this is just an HTML comment and WILL be sent to the client -->

在 PHP 这个不是很美妙的世界中,我能找到关于注释唯一的参考资料如下所示:
/*
  multi-line comment
*/

还有这些内容:

// single line comment

但是这些不会注释掉HTML和PHP标记的一部分内容:
/*
 <? do_something() ?>
*/

将 /* 和 */ 渲染到浏览器中,而 do_something() 仍然被调用。

在 PHP 中是否有与上面显示的 JSP 注释相当的等效物?


为了完成,再来一个:#这也是PHP注释 - ksbg
2个回答

8
这不会注释掉一个代码块的原因是:
/*
 <? do_something() ?>
*/

您遇到的问题是,您当前不在 PHP 中,而是在 HTML 中,因此 /* */ 不是 HTML 中有效的注释结构。

如果您需要在 HTML 中添加注释,应该使用以下格式:

<?php
/*
some_php();
?>
and html
<?php
more_php();
*/
?>

它会正常工作。注释块内的PHP代码不会被执行,也不会发送任何内容到浏览器。

虽然在SO代码高亮器上效果不佳...

请确保在打开注释部分时处于php状态(在<?php标记后)。


在您的情况下,我猜想“和html”将呈现在页面上,换句话说,没有等同于注释掉所有内容的方法,我是对的吗? - NickJ
@NickJ 没有,注释部分中的任何内容都不会被发送到浏览器。PHP在服务器上进行处理,只有最终结果才会被发送到浏览器。例如:http://codepad.viper-7.com/dtFnQx - jeroen
1
是的,你说得对,<? /* ?> 和 <? */ ?> 看起来相当于 JSP 的 <%-- 和 --%>。谢谢 - NickJ

1
你需要明白,你正在同一个文件中编写HTML和PHP代码,它们分别由浏览器和服务器处理。
<?php ?>标签之间的代码被视为PHP代码,并通过服务器处理。其他所有内容都会被发送到浏览器以处理(即被视为HTML代码)。
因为//或//是PHP注释块,不属于超文本标记语言,所以如果在适当的标签之外发现它们,它们将不起作用并显示为字符。
同样地,HTML注释代码<!-- -->在PHP中也不能作为注释,如果你试图在php标签内使用它们,很可能会导致错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接