web-dev-qa-db-ja.com

htmlのphp変数:<?php echo $ var; ?>

私はHTMLとPHPの混合で多くの作業をしていますが、ほとんどの場合、いくつかのPHP変数を含むソリッドHTMLが必要なので、コードは次のようになります。

<tr><td> <input type="hidden" name="type" value="<?php echo $var; ?>" ></td></tr>

これはかなりいです。次のような短いものはありませんか?

<tr><td> <input type="hidden" name="type" value="$$var" ></td></tr>

これは可能ですが、""(それらをすべて''に置き換える必要があります)で行き詰まってしまい、レイアウトがなくなってしまいます。

echo "<tr><td> <input type="hidden" name="type" value="$var" ></td></tr>"

もっと良いものはありますか?

57
matthy

コードの短いタグバージョンがあります。これは、使用するのに完全に受け入れられるようになりました

<input type="hidden" name="type" value="<?= $var ?>" >

これは(PHP 5.4より前)php設定で短いタグを有効にする必要があります。入力したコードとまったく同じように機能します。これらの行は、内部実装において文字通り同一です:

<?= $var1, $var2 ?>
<?php echo $var1, $var2 ?>

組み込みソリューションについてはこれで終わりです。出力にデータを簡単に埋め込むことができるサードパーティのテンプレートライブラリがたくさんあります。 smarty を開始するのに適した場所です。

74
meagar

HEREDOC 構文を使用します。変更されていない/エスケープされていないHTMLマークアップを使用して、単一引用符と二重引用符、変数、さらには関数呼び出しを混在させることができます。

echo <<<MYTAG
  <tr><td> <input type="hidden" name="type" value="$var1" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var2" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var3" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var4" ></td></tr>
MYTAG;
23
code_burgar

プロジェクトの標準php libとしてSmartyテンプレートエンジンを採用すべきだと思います。

http://www.smarty.net/

Name: {$name|capitalize}<br>
5
gcb

ショートタグを使用しないことをお勧めします。理由の詳細については、 PHPショートタグを使用できますか? を参照してください。

個人的には、HTMLとPHPを混ぜても構いません

<a href="<?php echo $link;?>">link description</a>

優れた構文強調表示を備えたコードエディタがあれば、これはかなり読みやすいと思います。 PHPを使用してHTMLのエコーを開始すると、HTMLを強調する構文のすべての利点が失われます。 HTMLをエコーすることのもう1つの欠点は、引用符が含まれていることです。

echo '<a href="'.$link.'">link description</a>';

PHPでの単純なエコーと単純なループとHTMLでの残りの処理の最大の利点は、インデントが一貫していることです。これにより、読みやすさ/スキャン可能性が向上します。

1
Niels Bom

ビューに対してよりコンパクトな構文を提供するテンプレートシステムがたくさんあります。 Smarty は由緒正しい人気があります。 この記事 他の10個をリストします。

1
Jordan Running

HTMLセクションの前のphpセクションで、sprintf()を使用して変数から定数文字列を作成します。

$mystuff = sprinf("My name is %s and my mother's name is %s","Suzy","Caroline");

次に、HTMLセクションで、次のような任意の操作を実行できます。

<p>$mystuff</p> 
1
Coly Moore