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.