一起注释掉 HTML 和 PHP
Posted
技术标签:
【中文标题】一起注释掉 HTML 和 PHP【英文标题】:Comment out HTML and PHP together 【发布时间】:2011-08-12 11:43:40 【问题描述】:我有这个代码,
<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 代码没有被注释掉...有没有办法做到这一点?
【问题讨论】:
【参考方案1】:不要使用 html cmets(对 PHP 代码没有影响——仍然会被执行),你应该使用 PHP cmets:
<?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 样式的 comments...,这意味着评论将在遇到的第一个 */
处结束。
【讨论】:
这确实增加了一点(您需要 PHP 标记以及 PHP 注释标记),但这是最好的方法,我同意。 但是当他解开时,他必须同时删除 标记,这需要更多的工作。 @flipper:所以?这是一个额外的几个字符。不得不手动撕掉每一块 PHP 代码。 有趣的是,NetBeans 8.0.2 似乎不理解这一点(因此我的代码格式不正确,即使这是注释掉 HTML 的有效方法)。 在 sublime 文本编辑器中的快捷方式是什么?我知道 ctrl+c 但 PHP cmets 不行。【参考方案2】:我同意 Pascal 的解决方案是可行的方法,但是对于那些说它增加了删除 cmets 的额外任务的人,您可以使用以下注释样式技巧来简化您的生活:
<?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 中吗? 不,它没有。试试看! ;)【参考方案3】:如果您需要注释大量嵌套的 HTML + PHP 代码,我发现以下解决方案非常有效。
把所有的内容都包在这个里面:
<?php
if(false)
?>
Here goes your PHP + HTML code
<?php
?>
【讨论】:
这是真正有效的唯一解决方案,我不明白为什么这不是最佳答案 :) 非常感谢,伙计! 对于 3 个人来说,这个问题的真正意思是:这 ^ 是你的答案 ;) - 注意:我推荐 if(false): - endif;语法,因为对于下一个开发人员来说,它可能会更明显地影响标记【参考方案4】:<!-- -->
仅用于 HTML 注释,PHP 仍将运行...
因此,我最好的办法也是注释掉 PHP...
【讨论】:
【参考方案5】:您只能使用 PHP cmets 完成此操作。
<!-- <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;
*/
?>
【讨论】:
【参考方案6】:PHP 解析器将在您的整个代码中搜索 <?php
(或 <?
,如果 short_open_tag = On),因此 HTML 注释标签对 PHP 解析器行为没有影响,如果您不想解析您的 PHP 代码,您必须使用 PHP 注释指令(/* */
或 //
)。
【讨论】:
【参考方案7】:您也可以将其用作评论:
<?php
/* get_sidebar(); */
?>
【讨论】:
以上是关于一起注释掉 HTML 和 PHP的主要内容,如果未能解决你的问题,请参考以下文章