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

Matt Elhotiby
źródło

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.

Pascal MARTIN
źródło
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 //* ?>
Nev Stokes
źródło
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
    }
?>
nacięcie
źródło
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 ...

Dammy Akinsiku
źródło
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;

*/
?>
Płetwa
źródło
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 //) .

Ehsan Khodarahmi
źródło
0

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

<?php
    /* get_sidebar(); */

?>
znak
źródło