我有一个包含 PHP 的 HTML 代码,我想把它全部注释掉。
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
如何在不单独注释的情况下同时注释掉 HTML 和 PHP?
我有一个包含 PHP 的 HTML 代码,我想把它全部注释掉。
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
如何在不单独注释的情况下同时注释掉 HTML 和 PHP?
感谢罗斯帕特森,我发现我完全误解了这个问题。所以这是新的答案。我保留下面的旧答案,因为它可能对某些人仍然有用。
您的案例很简单,因为您的代码中既没有 PHP 字符串,也没有注释。这意味着注释这段特定的代码很简单:
<?php
/*
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
*/
?>
问题是您迟早会发现自己处于这种情况下不起作用,因为注释代码本身包含注释。想象下面的一段代码:
<div>
You're logged in.
<?php
/**
* Says "hello" to the person.
* @param string $name The name of the person.
*/
function SayHello($name)
{
echo 'Hello, ' . $name;
}
SayHello($personName);
?>
</div>
您不可能将其嵌入到单个注释中,因为它会在第 7 行中断。
相反,您可以做的是使用NOWDOC 语法将代码嵌入字符串中,并且永远不要使用此字符串:
<?php
$GUID2328f09280b94c22867d831a885b57eb = <<<'GUID2328f09280b94c22867d831a885b57eb'
<div>
You're logged in.
<?php
/**
* Says "hello" to the person.
* @param string $name The name of the person.
*/
function SayHello($name)
{
echo 'Hello, ' . $name;
}
SayHello($personName);
?>
</div>
GUID2328f09280b94c22867d831a885b57eb
?>
几点说明:
为什么我使用 NOWDOC 而不是简单的字符串?
一个简单的字符串将在第 5 行中断(在“Says "hello"”上)。单引号字符串将在第 2 行中断(在“You're”上)。
为什么我使用NOWDOC 而不是HEREDOC?
因为我不想解析变量名。在这种上下文中解析变量会导致很难找到和调试的问题,因为范围发生了变化。
这个可怕的 GUID2328 是什么……?
我使用GUID来确保,首先,字符串永远不会在实际结束之前终止,其次,字符串变量永远不会在以后的代码中合理使用。我放了一个 GUID 前缀,因为 HEREDOC/NOWDOC 要求名称以字母开头,而不是数字。
如果您觉得它丑陋和愚蠢,请随意使用您想要的任何语法。
它会影响 Web 应用程序的性能,对吧?
不要过早优化。初始化一个字符串可能会有性能成本,但要么它足够小而无需关心,要么甚至 PHP 解释器也足够聪明,可以优化代码并删除未使用的字符串(我非常怀疑)。
请注意,您不应该首先注释大量代码。如果您不需要该代码,只需将其删除即可。如果您认为以后可能需要它,让版本控制来处理它(您正在使用版本控制,是吗?)。
你在为谁评论?
开发商?然后在 PHP 中进行注释。例子:
<?php /** The value is hidden for the moment to be backwards compatible, but the field
* would be removed in the near future, since having this field presents a
* security risk. See bug report 1422, http://example.com/bugs/1422 */ ?>
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
请记住,HTML 注释是公开显示的。像上面的例子那样发表评论是给黑客的礼物。
用户?然后用 HTML 注释。例子:
<!-- If `returnurl` is null or empty, the client would be redirected to the home page
of the website. -->
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
在这里,目的是告诉用户一些有用的东西,例如屏幕废弃您的网站或做一些操作 HTML 的事情(我看到的唯一有效的例子是做一个真正的 API 对你来说太贵了,所以你授权并邀请用户直接解析 HTML 代码)。
请记住:
每个人都可以看到 HTML 注释,
HTML 评论被发送到客户端,增加了带宽的使用。注意:在大多数情况下,您不在乎;除非您在 Google 主页上工作,否则不会有几个额外的字节会影响您网站的性能。
在编写您的示例时,您不能在不单独评论的情况下将两者都注释掉。
如果您让 PHP 打印 html 以及值,您可以一次完成所有操作。如:
<?php
print '<input type="hidden" name="returnurl" value="';
if (!empty($link)) {echo $link;}
print '">';
?>
当然还有更好的方法来写这个,但是现在你可以这样做:
<?php /*
print '<input type="hidden" name="returnurl" value="';
if (!empty($link)) {echo $link;}
print '">';
*/
?>
PHP 被处理成 HTML,然后发送到请求页面的客户端。然后该客户端处理 HTML。所以 PHP 注释只能被 PHP 处理器看到,而 HTML 注释不会被 PHP 处理器触及,但是浏览器(客户端)会识别出 HTML 注释并相应地跳过它们。
希望这可以帮助。
如果你用很少或没有 HTML 注释 php 块,使用 php 注释,如果你用少量 PHP 注释大块 HTML,使用 HTML 注释。
将注释以最清晰和最具描述性的任何形式放置在任何地方,并尝试在整个编码过程中保持一致的风格。
您还应该根据您实际评论的内容进行区分。如果您要对 HTML 结构进行评论,如果您要评论 php 的详细信息,请使用 HTML,除非它位于 HTML 块的中间,否则请使用 php.ini。注释风格应该补充代码风格。
你有没有尝试过:
<?php /*
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
*/ ?>
我不太喜欢 PHP,但我认为这会起作用,除非它已经有一个*/
。
nibra是唯一理解这个问题并给出有价值答案的人。
<?php if(0) : ?>
...
<?php endif; ?>
这是我发现的最简单的方法,可以注释掉包含 PHP 的 HTML 代码块,而无需进入该块并摆弄其内容。
<!-- <input type="hidden" name="returnurl" value="<?php //if (!empty($link)) {echo $link;}?>"> -->
就这样
如果您可以在评论之前进行一些重写(我猜您不想只是删除代码)。
说你开始
<input type="hidden" name="returnurl" value="<?php
/**
a multi line
comment here
*/
if (!empty($link)) {echo $link;}?>">
像这样转换
<?php
echo :<input type="hidden" name="returnurl" value="";
//a multi line
//comment here
//
if (!empty($link)) {echo $link;}
echo ">";
?>
最后全部注释掉
<?php
/*
echo :<input type="hidden" name="returnurl" value="";
//a multi line
//comment here
//
if (!empty($link)) {echo $link;}
echo ">";*/
?>
(暂时)停用代码的一种非常简单的方法是用
<?php if(0) : ?>
...
<?php endif; ?>
这独立于块内的任何注释样式。if(0)
违反编码风格if (0)
是有意的,因为它使以后更容易找到这些位置。