【PHP】複数行のHTMLを出力する方法

PHP

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
print 普通 可能 簡単なHTML
?> 終了タグ 高い 可能 テンプレート的な使い方
printf 普通 フォーマット可能 変数を多用する場合

シンプルなHTMLなら echo、複雑なHTMLなら ヒアドキュメント や 終了タグ を使うのがオススメです。