我有一个包含PHP的HTML代码,我想全部评论。
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
如何在不单独评论HTML和PHP的情况下注释掉它们?
答案 0 :(得分:8)
感谢Ross Patterson,我发现我完全误解了这个问题。所以这是新答案。我保留下面的旧答案,因为它可能对某些人有用。
您的情况很简单,因为您的代码中既没有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 syntax将代码嵌入字符串中,而不使用此字符串:
<?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行中断(在“说”你好“”)。单引号字符串将在第2行(在“你是”上)中断。
为什么我使用NOWDOC代替HEREDOC?
因为我不希望解析变量名。在这样的上下文中解析变量会导致很难找到和调试的问题,因为范围会发生变化。
这个可怕的GUID2328是什么......?
我使用GUID来确保首先,字符串永远不会在实际结束之前终止,其次,字符串变量将永远不会在代码中合理使用。我输入了一个GUID前缀,因为HEREDOC / NOWDOC要求名称以字母开头,而不是数字。
如果你觉得它丑陋而愚蠢,可以随意使用你想要的任何语法。
这会影响网络应用的效果,对吗?
不要过早优化。初始化一个字符串可能会产生性能成本,但要么它足够小就可以关注,或者甚至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主页上工作,否则这不会影响您网站的效果。
答案 1 :(得分:2)
正如你的例子所写的那样,如果不单独评论,你就不能对它们进行评论。
如果你让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处理器看到,PHP处理器不会触及HTML注释,但浏览器(客户端)会识别HTML注释会相应地跳过它们。
希望这有帮助。
答案 2 :(得分:1)
如果您正在使用很少或没有HTML评论php的块,请使用php注释,如果您使用很少的PHP语法评论大块HTML,请使用HTML注释。
将评论放在任何地方,无论以何种形式最清晰,最具描述性,并尝试在整个编码过程中保持一致的风格。
您也应该根据您实际评论的内容进行区分。如果您正在对HTML结构进行评论,请使用HTML,如果您正在评论php的详细信息,除非它是HTML块中间的一个衬垫,请使用php。评论样式应该补充代码风格。
答案 3 :(得分:1)
你试过了吗?
<?php /*
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
*/ ?>
我对PHP没有太大的影响,但我认为这样可行,除非其中已经有*/
。
答案 4 :(得分:0)
<!-- <input type="hidden" name="returnurl" value="<?php //if (!empty($link)) {echo $link;}?>"> -->
就像那样
答案 5 :(得分:0)
如果您在评论之前可以进行一些重写(我想您不想删除代码)。
假设您从
开始<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 ">";*/
?>
答案 6 :(得分:0)
一种非常简单的取消激活代码的方法(暂时)是用
包含它<?php if(0) : ?>
...
<?php endif; ?>
这与块内的任何评论样式无关。编号样式违规if(0)
取决于if (0)
,因为它可以让您更轻松地找到这些位置。
答案 7 :(得分:0)
nibra 是唯一理解这个问题并给出有价值答案的人。
<?php if(0) : ?>
...
<?php endif; ?>
这是我发现的最简单的方法,用于注释掉包含PHP的HTML代码块,而不必进入块并调整其内容。