如何评论出包含PHP的HTML代码?

时间:2013-04-06 20:38:48

标签: php

我有一个包含PHP的HTML代码,我想全部评论。

<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">

如何在不单独评论HTML和PHP的情况下注释掉它们?

8 个答案:

答案 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代码。

请记住:

  1. 每个人都可以看到HTML评论,

  2. 将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)

如果您在评论之前可以进行一些重写(我想您不想删除代码)。

  1. 使代码全部为php,
  2. 将任何多行代码转换为一堆单行注释
  3. 最后使用php多行注释来注释掉整个块
  4. 假设您从

    开始
    <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代码块,而不必进入块并调整其内容。