5

PHP を含む HTML コードがあり、すべてコメントアウトしたかったのです。

<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">

HTML と PHP の両方を個別にコメントせずにコメントアウトするにはどうすればよいですか?

4

8 に答える 8

8

Ross Patterson のおかげで、私はこの質問を完全に誤解していたことに気づきました。これが新しい答えです。一部の人にとってはまだ役立つ可能性があるため、古い回答を以下に残します。

新しい答え

コードには PHP 文字列もコメントも含まれていないため、ケースは簡単です。つまり、この特定のコードにコメントを付けるのは次のように簡単です。

<?php
/*
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
*/
?>

問題は、コメント化されたコード自体にコメントが含まれているため、遅かれ早かれこれが機能しない状況に陥ることです。次のコードを想像してください。

<div>
  You're logged in.
  <?php
  /**
   * Says "hello" to the person.
   * @param string $name The name of the person.
   */
  function SayHello($name)
  {
    echo 'Hello, ' . $name;
  }

  SayHello($personName);
  ?>
</div>

7 行目で壊れるため、これを 1 つのコメントに埋め込むことはできません。

代わりに、NOWDOC 構文を使用してコードを文字列に埋め込み、この文字列を使用しないようにすることができます。

<?php
$GUID2328f09280b94c22867d831a885b57eb = <<<'GUID2328f09280b94c22867d831a885b57eb'
<div>
  You're logged in.
  <?php
  /**
   * Says "hello" to the person.
   * @param string $name The name of the person.
   */
  function SayHello($name)
  {
    echo 'Hello, ' . $name;
  }

  SayHello($personName);
  ?>
</div>
GUID2328f09280b94c22867d831a885b57eb
?>

いくつかのコメント:

  • 単純な文字列の代わりに NOWDOC を使用するのはなぜですか?

    単純な文字列は 5 行目 (「Says "hello"」) で途切れます。単一引用符で囲まれた文字列は、2 行目 (「You're」) で中断されます。

  • HEREDOC の代わりに NOWDOC を使用するのはなぜですか?

    変数名を解析したくないからです。このようなコンテキストで変数を解析すると、スコープが変更されるため、検出とデバッグが非常に困難な問題が発生します。

  • この恐ろしい GUID2328 は何ですか?

    GUIDを使用して、まず、文字列が実際の末尾より前に終了しないようにします。次に、文字列変数がコードの後半で合理的に使用されないようにします。HEREDOC/NOWDOC では名前を数字ではなく文字で開始する必要があるため、GUID プレフィックスを付けました。

    見苦しくばかげていると感じた場合は、好きな構文を自由に使用してください。

  • Web アプリのパフォーマンスに影響しますよね?

    時期尚早の最適化を行わないでください。文字列を初期化するとパフォーマンスが低下する可能性がありますが、気にするほど小さいか、PHPインタープリターでさえコードを最適化して未使用の文字列を削除するのに十分賢いでしょう(私はそれを非常に疑っています)。

そもそもコードの大部分をコメントすることは想定されていないことに注意してください。コードが不要な場合は、削除してください。後で必要になると思われる場合は、バージョン管理に任せてください (バージョン管理を使用していますか?)。


古い答え

誰のためにコメントしていますか?

  • 開発者?次に、PHP でコメントします。例:

    <?php /** The value is hidden for the moment to be backwards compatible, but the field
            * would be removed in the near future, since having this field presents a
            * security risk. See bug report 1422, http://example.com/bugs/1422 */ ?>
    <input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
    

    HTML コメントは公開されていることに注意してください。上記の例のようにコメントを入れることは、ハッカーへの贈り物です。

  • ユーザー?次に、HTML でコメントします。例:

    <!-- If `returnurl` is null or empty, the client would be redirected to the home page
         of the website. -->
    <input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
    

    ここでの意図は、たとえば、Web サイトのスクリーン スクラップや HTML を操作する何かを行うユーザーに役立つことを伝えることです (唯一の有効な例は、実際の API を実行するのはコストがかかりすぎるということです。ユーザーが HTML コードを直接解析することを許可し、招待します)。

次のことを覚えておいてください。

  1. HTMLコメントは誰でも見れるし、

  2. HTML コメントがクライアントに送信されるため、帯域幅の使用量が増加します。注: ほとんどの場合、気にする必要はありません。Google ホームページで作業している場合を除き、Web サイトのパフォーマンスに影響を与えるのは数バイトの追加ではありません。

于 2013-04-06T22:39:34.917 に答える
2

あなたの例が書かれているので、別々にコメントせずに両方をコメントアウトすることはできません。

PHPにhtmlと値を出力させると、一度にすべてを実行できます。そのような:

<?php 
     print '<input type="hidden" name="returnurl" value="';
     if (!empty($link)) {echo $link;}
     print '">';
?>

もちろん、これを書くためのより良い方法はもちろんありますが、今ではこれを行うことができます:

<?php /*
     print '<input type="hidden" name="returnurl" value="';
     if (!empty($link)) {echo $link;}
     print '">';
     */
?>

PHP は HTML に処理され、ページを要求しているクライアントに送信されます。次に、そのクライアントが HTML を処理します。したがって、PHP コメントは PHP プロセッサによってのみ表示され、HTML コメントは PHP プロセッサによって処理されませんが、ブラウザ (クライアント) は HTML コメントがスキップされることを認識します。

お役に立てれば。

于 2013-04-07T05:47:32.707 に答える
1

HTML がほとんどまたはまったくない php のブロックにコメントする場合は、php コメントを使用します。PHP が少ししか含まれていない大きな HTML ブロックにコメントする場合は、HTML コメントを使用します。

コメントは、最も明確で説明的な任意の場所に配置し、コーディング全体で一貫したスタイルを維持するようにしてください。

また、実際にコメントしていることに基づいて区別する必要があります。HTML 構造についてコメントする場合、php の詳細についてコメントする場合は HTML を使用してください。コメント スタイルは、コード スタイルを補完する必要があります。

于 2013-04-06T20:43:41.743 に答える
1

やってみました:

<?php /*
<input type="hidden" name="returnurl" value="<?php if (!empty($link)) {echo $link;}?>">
*/ ?>

私はあまり PHP をいじりませんが、すでに PHP が含まれていない限り、それでうまくいくと思います*/

于 2013-04-07T03:23:40.053 に答える
0

nibraは、この質問を理解し、貴重な回答を提供する唯一の企業です。

<?php if(0) : ?>
...
<?php endif; ?>

これは、PHP を含む HTML コードのブロックをコメント アウトするために私が発見した最も簡単な方法です。ブロックに入ってその内容をいじる必要はありません。

于 2013-11-19T06:41:00.177 に答える
0
<!-- <input type="hidden" name="returnurl" value="<?php //if (!empty($link)) {echo $link;}?>"> -->

ちょうどそのように

于 2013-04-07T07:10:35.670 に答える
0

コメントする前に書き直すことができれば(コードを削除したくないだけだと思います)。

  1. コードをすべてphpにして、
  2. 複数行のコードを一連の単一行コメントに変換します
  3. 最後に、php の複数行コメントを使用して、ブロック全体をコメントアウトします

あなたがから始めるとしましょう

<input type="hidden" name="returnurl" value="<?php 
/**
a multi line
comment here
*/
if (!empty($link)) {echo $link;}?>">

このように変換します

<?php 
echo :<input type="hidden" name="returnurl" value="";
//a multi line
//comment here
//
if (!empty($link)) {echo $link;}
echo ">";
?>

最後に全部コメントアウト

<?php 
/*
echo :<input type="hidden" name="returnurl" value="";
//a multi line
//comment here
//
if (!empty($link)) {echo $link;}
echo ">";*/
?>
于 2013-04-08T12:33:01.177 に答える
0

コードを (一時的に) 非アクティブ化するための非常に簡単な方法は、コードを次のように囲むことです。

<?php if(0) : ?>
...
<?php endif; ?>

これは、ブロック内のコメント スタイルとは無関係です。if(0)後でif (0)それらの場所を見つけやすくするため、コーディング スタイル違反は意図されたものではありません。

于 2013-04-08T13:09:31.397 に答える