Comente HTML e PHP juntos

91

Eu tenho este código,

    <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>

e adoraria comentar os dois de uma só vez ... mas quando tento

    <!-- <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> -->

a página falha - parece que o código PHP não está sendo comentado ... Existe uma maneira de fazer isso?

Matt Elhotiby
fonte

Respostas:

179

Em vez de usar comentários HTML (que não têm efeito no código PHP - que ainda será executado) , você deve usar comentários 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>
*/ ?>


Com isso, o código PHP dentro do HTML não será executado; e nada (nem o HTML, nem o PHP, nem o resultado de sua não execução) será exibido.


Apenas uma observação: você não pode aninhar comentários de estilo C ... o que significa que o comentário terminará no primeiro */encontrado.

Pascal MARTIN
fonte
Isso adiciona um pouco mais (você precisa das tags PHP, bem como da marcação de comentários do PHP), mas essa é a melhor maneira de fazer isso, eu concordo.
qJake
Mas então, quando ele descomenta, ele tem que remover as tags <? Php e?> Também, o que dá um pouco mais de trabalho.
Flipper
4
@flipper: e daí? são alguns caracteres extras versus ter que arrancar cada bloco de código PHP manualmente.
Marc B,
Curiosamente, parece que o NetBeans 8.0.2 não entende isso (e então formata meu código incorretamente, embora esta seja uma forma válida de comentar o HTML).
Ryan
qual é o atalho para fazer isso no editor de texto sublime? Eu sei ctrl + c, mas isso não faz comentários de PHP.
yadavr
42

Concordo que a solução de Pascal é o caminho a percorrer, mas para aqueles que dizem que adiciona uma tarefa extra para remover os comentários, você pode usar o seguinte truque de estilo de comentário para simplificar sua vida:

<?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 // */ ?>

Para impedir que o bloco de código seja comentado, basta alterar o comentário de abertura para:

<?php //* ?>
Nev Stokes
fonte
Esta solução não resulta em duas linhas vazias, cada uma com duas células vazias, ainda aparecendo no HTML?
Sparr de
1
Não, não importa. Experimente e veja! ;)
Nev Stokes
6

Achei a solução a seguir muito eficaz se você precisar comentar muitos códigos HTML + PHP aninhados.

Envolva todo o conteúdo neste:

<?php
    if(false){
?>

Here goes your PHP + HTML code

<?php
    }
?>
usuario
fonte
Esta é a única solução que realmente funciona , não entendo porque esta não é a resposta principal :) Muito obrigado, cara!
bviktor
Para as 3 pessoas que realmente quiseram dizer esta pergunta da maneira como ela foi feita: ESTE ^ é sua resposta;) - Observação: eu recomendo o if (false): - endif; sintaxe, pois pode ser mais óbvio para o próximo desenvolvedor que se destina a afetar a marcação
MJHd
4

O <!-- -->é apenas para comentários em HTML e o PHP ainda será executado de qualquer maneira ...

Portanto, a melhor coisa que eu faria também é comentar o PHP ...

Dammy Akinsiku
fonte
2

Você só pode fazer isso com comentários 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> -->

Da maneira como PHP e HTML funcionam, não é possível comentar de uma só vez, a menos que você:

<?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;

*/
?>
nadadeira
fonte
0

O analisador PHP pesquisará todo o seu código <?php(ou <?se short_open_tag = On), então as tags de comentário HTML não têm efeito no comportamento do analisador PHP e se você não quiser analisar o seu código PHP, você deve usar as diretivas de comentários do PHP ( /* */ou //) .

Ehsan Khodarahmi
fonte
0

Você também pode usar isso como um comentário:

<?php
    /* get_sidebar(); */

?>
Marca
fonte