Commentez HTML et PHP ensemble

91

J'ai ce code,

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

et j'adorerais commenter les deux d'un seul coup ... mais quand j'essaierai

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

la page échoue - il semble que le code PHP n'est pas commenté ... Y a-t-il un moyen de le faire?

Matt Elhotiby
la source

Réponses:

179

Au lieu d'utiliser des commentaires HTML (qui n'ont aucun effet sur le code PHP - qui sera toujours exécuté) , vous devriez utiliser des commentaires 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>
*/ ?>


Avec cela, le code PHP à l'intérieur du HTML ne sera pas exécuté; et rien (ni le HTML, ni le PHP, ni le résultat de sa non-exécution) ne sera affiché.


Juste une remarque: vous ne pouvez pas imbriquer les commentaires de style C ... ce qui signifie que le commentaire se terminera à la première */rencontre.

Pascal MARTIN
la source
Cela ajoute un peu plus (vous avez besoin des balises PHP ainsi que du balisage de commentaire PHP), mais c'est la meilleure façon de le faire, je suis d'accord.
qJake
Mais ensuite, quand il décommente, il doit également supprimer les taags <? Php et?>, Ce qui représente un peu plus de travail.
Flipper
4
@flipper: oui? c'est quelques caractères de plus que d'avoir à extraire chaque bloc de code PHP à la main.
Marc B
Fait intéressant, il semble que NetBeans 8.0.2 ne comprend pas cela (et formate donc mon code de manière incorrecte même si c'est un moyen valide de commenter le HTML).
Ryan
quel est le raccourci pour le faire dans un éditeur de texte sublime? Je connais ctrl + c mais cela ne fait pas de commentaires PHP.
yadavr
42

Je suis d'accord que la solution de Pascal est la voie à suivre, mais pour ceux qui disent qu'elle ajoute une tâche supplémentaire pour supprimer les commentaires, vous pouvez utiliser l'astuce de style de commentaire suivante pour vous simplifier la vie:

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

Afin d'empêcher le bloc de code d'être commenté, changez simplement le commentaire d'ouverture en:

<?php //* ?>
Nev Stokes
la source
Cette solution n'entraîne-t-elle pas deux lignes vides, chacune avec deux cellules vides, apparaissant toujours dans le HTML?
Sparr
1
Non, ce n'est pas le cas. Essayez-le et voyez! ;)
Nev Stokes
6

J'ai trouvé la solution suivante assez efficace si vous avez besoin de commenter beaucoup de code HTML + PHP imbriqué.

Enveloppez tout le contenu dans ceci:

<?php
    if(false){
?>

Here goes your PHP + HTML code

<?php
    }
?>
pseudo
la source
C'est la seule solution qui fonctionne réellement , je ne comprends pas pourquoi ce n'est pas la meilleure réponse :) Merci beaucoup, mec!
bviktor
Pour les 3 personnes qui pensent réellement cette question de la façon dont elle est posée: CECI ^ est votre réponse;) - Note: je recommande le if (false): - endif; syntaxe, car il peut être plus évident pour le prochain développeur qu'elle est censée affecter le balisage
MJHd
4

Le <!-- -->n'est que pour les commentaires HTML et le PHP fonctionnera toujours de toute façon ...

Par conséquent, la meilleure chose que je ferais est également de commenter le PHP ...

Dammy Akinsiku
la source
2

Vous ne pouvez accomplir cela qu'avec des commentaires 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> -->

La façon dont PHP et HTML fonctionnent, il n'est pas capable de commenter d'un seul coup sauf si vous le faites:

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

*/
?>
Flipper
la source
0

L'analyseur PHP recherchera dans tout votre code <?php(ou <?si short_open_tag = On), donc les balises de commentaire HTML n'ont aucun effet sur le comportement de l'analyseur PHP et si vous ne voulez pas analyser votre code PHP, vous devez utiliser les directives de commentaire PHP ( /* */ou //) .

Ehsan Khodarahmi
la source
0

Vous pouvez également l'utiliser comme commentaire:

<?php
    /* get_sidebar(); */

?>
marque
la source