Komentuj razem HTML i PHP


91

Mam ten kod,

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

i chciałbym skomentować oba za jednym razem ... ale kiedy spróbuję

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

strona nie działa - wygląda na to, że kod PHP nie jest komentowany ... Czy istnieje sposób, aby to zrobić?

Odpowiedzi:


181

Zamiast używać komentarzy HTML (które nie mają wpływu na kod PHP - który nadal będzie wykonywany) , powinieneś używać komentarzy 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>
*/ ?>


Dzięki temu kod PHP wewnątrz HTML nie zostanie wykonany; i nic (ani HTML, ani PHP, ani wynik jego niewykonania) nie zostanie wyświetlone.


Tylko jedna uwaga: nie można zagnieżdżać komentarzy w stylu C ... co oznacza, że ​​komentarz kończy się na pierwszym */napotkanym.


Dodaje to trochę więcej (potrzebujesz tagów PHP, a także znaczników komentarzy PHP), ale zgadzam się, że jest to najlepszy sposób.
— qJake,

Ale kiedy odkomentuje, musi również usunąć tagi <? Php i?>, Co wymaga trochę więcej pracy.
— Flipper,

4
@flipper: tak? to dodatkowe kilka znaków zamiast konieczności ręcznego wyrywania każdego bloku kodu PHP.
— Marc B

Co ciekawe, wygląda na to, że NetBeans 8.0.2 tego nie rozumie (i dlatego nieprawidłowo formatuje mój kod, mimo że jest to prawidłowy sposób komentowania HTML).
— Ryan

jaki jest skrót, aby to zrobić w wysublimowanym edytorze tekstu? Znam ctrl + c, ale to nie robi komentarzy PHP.
— yadavr

42

Zgadzam się, że rozwiązanie Pascala jest drogą do zrobienia, ale dla tych, którzy twierdzą, że dodaje dodatkowe zadanie do usunięcia komentarzy, możesz użyć następującej sztuczki w stylu komentarzy, aby uprościć swoje życie:

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

Aby zatrzymać komentowanie bloku kodu, po prostu zmień komentarz otwierający na:

<?php //* ?>

Czy to rozwiązanie nie powoduje powstania dwóch pustych wierszy, każdy z dwiema pustymi komórkami, wciąż pojawiających się w kodzie HTML?
— Sparr

1
Nie, to nieprawda. Wypróbuj i zobacz! ;)
— Nev Stokes

6

Poniższe rozwiązanie uznałem za całkiem skuteczne, jeśli chcesz skomentować dużo zagnieżdżonego kodu HTML + PHP.

Owiń całą zawartość w to:

<?php
    if(false){
?>

Here goes your PHP + HTML code

<?php
    }
?>

To jedyne rozwiązanie, które faktycznie działa , nie rozumiem, dlaczego to nie jest najlepsza odpowiedź :) Wielkie dzięki, stary!
— bviktor,

Dla 3 osób, które rzeczywiście mają na myśli to pytanie tak, jak zostało ono zadane: TO ^ to twoja odpowiedź;) - Uwaga: polecam if (false): - endif; składnia, ponieważ dla następnego
— dewelopera

4

Służy <!-- -->tylko do komentowania HTML, a PHP i tak będzie działać ...

Dlatego najlepszą rzeczą, jaką bym zrobił, to również skomentowanie PHP ...


2

Możesz to osiągnąć tylko za pomocą komentarzy 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> -->

Sposób, w jaki działa PHP i HTML, nie jest w stanie komentować za jednym zamachem, chyba że:

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

Parser PHP przeszuka cały kod w poszukiwaniu <?php(lub <?jeśli short_open_tag = On), więc tagi komentarzy HTML nie mają wpływu na zachowanie parsera PHP i jeśli nie chcesz analizować kodu PHP, musisz użyć dyrektyw komentowania PHP ( /* */lub //) .


0

Możesz również użyć tego jako komentarza:

<?php
    /* get_sidebar(); */

?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.