PHPでHTMLを出力する際、複数行のコードを扱う方法はいくつかあります。この記事では、それぞれの方法を見出し付きで詳しく紹介します。
ヒアドキュメントを使用する
ヒアドキュメント(<<<EOT 〜 EOT;)を使うと、複数行のHTMLを簡単に出力できます。
<?php
$html = <<<EOT
<div class="container">
<h2>タイトル</h2>
<p>これはヒアドキュメントを使ったHTMLの出力です。</p>
</div>
EOT;
echo $html;
?>
メリット
” や ‘ のエスケープが不要
HTMLコードの可読性が高い
echo で複数行のHTMLを出力
echo を使用して、複数行のHTMLを出力する方法も一般的です。
<?php
echo '<div class="container">
<h2>タイトル</h2>
<p>これはechoを使ったHTMLの出力です。</p>
</div>';
?>
また、複数の echo を連結して書くことも可能です。
<?php
echo '<div class="container">' .
'<h2>タイトル</h2>' .
'<p>これはechoを使ったHTMLの出力です。</p>' .
'</div>';
?>
メリット
シンプルで使いやすい
変数を簡単に埋め込める
デモメリット
” や ‘ のエスケープが必要
print を使用
echo と似ていますが、print も同じように使えます。
<?php
print '<div class="container">
<h2>タイトル</h2>
<p>これはprintを使ったHTMLの出力です。</p>
</div>';
?>
メリット
echo とほぼ同じ書き方
print は式として扱える(戻り値が 1 になる)
デメリット
echo よりも若干遅い(ただし誤差レベル)
PHPの終了タグを利用
PHPの終了タグ (?>) を使うと、HTML部分を直接記述できます。
<?php
$heading = "タイトル";
$text = "これはPHPの終了タグを使ったHTMLの出力です。";
?>
<div class="container">
<h2><?php echo $heading; ?></h2>
<p><?php echo $text; ?></p>
</div>
<?php
// ここから再びPHPコードを記述可能
?>
メリット
HTMLコードをそのまま記述でき、可読性が高い
デメリット
PHPコードと混ざると見づらくなる
printf や sprintf を使う
フォーマットを適用しながらHTMLを出力できます。
<?php
$heading = "タイトル";
$text = "これはprintfを使ったHTMLの出力です。";
printf('<div class="container"><h2>%s</h2><p>%s</p></div>', $heading, $text);
?>
メリット
フォーマットを適用しながら変数を埋め込める
デメリット
echo や ヒアドキュメント より冗長
まとめ
方法 | 可読性 | 変数の埋め込み | 適用範囲 |
---|---|---|---|
ヒアドキュメント | 高い | 可能 | 大規模なHTML |
echo | 普通 | 可能 | 簡単なHTML |
普通 | 可能 | 簡単なHTML | |
?> 終了タグ | 高い | 可能 | テンプレート的な使い方 |
printf | 普通 | フォーマット可能 | 変数を多用する場合 |
シンプルなHTMLなら echo、複雑なHTMLなら ヒアドキュメント や 終了タグ を使うのがオススメです。