一起注释掉HTML和PHP


91

我有这个代码,

    <tr>
      <td><?php echo $entry_keyword; ?></td>
      <td><input type="text" name="keyword" value="<?php echo $keyword; ?>" /></td>
    </tr>
    <tr>
      <td><?php echo $entry_sort_order; ?></td>
      <td><input name="sort_order" value="<?php echo $sort_order; ?>" size="1" /></td>
    </tr>

我想一口气评论一下...但是当我尝试时

    <!-- <tr>
      <td><?php echo $entry_keyword; ?></td>
      <td><input type="text" name="keyword" value="<?php echo $keyword; ?>" /></td>
    </tr>
    <tr>
      <td><?php echo $entry_sort_order; ?></td>
      <td><input name="sort_order" value="<?php echo $sort_order; ?>" size="1" /></td>
    </tr> -->

页面失败-似乎PHP代码没有被注释掉。有没有办法做到这一点?

Answers:


179

而不是使用HTML注释(这对PHP代码没有影响-仍将执行),您应该使用PHP注释:

<?php /*
<tr>
      <td><?php echo $entry_keyword; ?></td>
      <td><input type="text" name="keyword" value="<?php echo $keyword; ?>" /></td>
    </tr>
    <tr>
      <td><?php echo $entry_sort_order; ?></td>
      <td><input name="sort_order" value="<?php echo $sort_order; ?>" size="1" /></td>
    </tr>
*/ ?>


这样,将不会执行HTML内的PHP代码。不会显示任何内容(不是HTML,不是PHP,也不是不执行的结果)


请注意:您不能嵌套C样式的注释 ...这意味着注释将在第一次*/遇到时结束。


这确实增加了一点(您需要PHP标记以及PHP注释标记),但这是实现此目的的最佳方法,我同意。
qJake 2011年

但是,当他取消注释时,他也必须删除<?php和?> taags,这还需要更多工作。
Flipper

4
@flipper:是吗?与必须手动删除每个PHP代码块相比,这要多出几个字符。
Marc B

有趣的是,NetBeans 8.0.2似乎不理解这一点(因此,即使这是注释掉HTML的有效方法,我的代码格式也不正确)。
瑞安

在崇高的文本编辑器中执行此操作的快捷方式是什么?我知道ctrl + c,但这不做PHP注释。
yadavr

42

我同意Pascal的解决方案是必经之路,但是对于那些说要添加删除注释的额外任务的人,您可以使用以下注释样式技巧来简化您的生活:

<?php /* ?>
<tr>
      <td><?php echo $entry_keyword; ?></td>
      <td><input type="text" name="keyword" value="<?php echo $keyword; ?>" /></td>
    </tr>
    <tr>
      <td><?php echo $entry_sort_order; ?></td>
      <td><input name="sort_order" value="<?php echo $sort_order; ?>" size="1" /></td>
    </tr>
<?php // */ ?>

为了停止注释掉代码块,只需将开始注释更改为:

<?php //* ?>

此解决方案是否会导致在HTML中仍出现两个空行,每个空行都有两个空单元格?
Sparr 2014年

1
不,不是。试试看!;)
Nev Stokes 2015年

6

如果您需要注释很多嵌套的HTML + PHP代码,我发现以下解决方案非常有效。

包装所有内容:

<?php
    if(false){
?>

Here goes your PHP + HTML code

<?php
    }
?>

这是唯一的解决方案,它的实际工作,我不明白这是为什么不顶答案:)谢谢你,伙计!
bviktor

对于实际上是问这个问题的3个人:THIS ^是您的答案;)-注意:我建议使用if(false):-endif; 语法,因为它可能会更明显,以接下来的开发,这是为了影响的标记
MJHd


2

您只能使用PHP注释完成此操作。

 <!-- <tr>
      <td><?php //echo $entry_keyword; ?></td>
      <td><input type="text" name="keyword" value="<?php //echo $keyword; ?>" /></td>
    </tr>
    <tr>
      <td><?php //echo $entry_sort_order; ?></td>
      <td><input name="sort_order" value="<?php //echo $sort_order; ?>" size="1" /></td>
    </tr> -->

PHP和HTML的工作方式,除非您这样做,否则无法一口气发表评论:

<?php

/*

echo <<<ENDHTML
 <tr>
          <td>{$entry_keyword}</td>
          <td><input type="text" name="keyword" value="{echo $keyword}" /></td>
        </tr>
        <tr>
          <td>{$entry_sort_order}</td>
          <td><input name="sort_order" value="{$sort_order}" size="1" /></td>
        </tr>
ENDHTML;

*/
?>

0

PHP解析器将在整个代码中搜索<?php(或<?如果short_open_tag = On),因此HTML注释标记对PHP解析器的行为没有影响;如果您不想解析PHP代码,则必须使用PHP注释指令(/* *///) 。


0

您也可以将其用作注释:

<?php
    /* get_sidebar(); */

?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.