ヒアドキュメント

トップ > PHP入門 > ヒアドキュメント

目次

広告

WADAX
安心の365日電話サポート付きレンタルサーバーです。
ロリポップ!
月額263円からのレンタルサーバー。マニュアルも充実しています。

ヒアドキュメントについて

何行にも渡る長い文章を出力する場合、以下のように echo を使って改行文字を出力すれば実現できます。

<?php

$purpose = "Webプログラミング";

echo "PHPとは、HTMLへの埋め込み型プログラミング言語です。<br />\n";
echo "正式名称は「PHP: Hypertext Preprocessor」です。<br />\n";
echo "PHPは{$purpose}に利用されます。<br />\n";
echo "<a href=\"detail.php\">詳細を読む<a>\n";

?>

ですが改行文字を書いたりエスケープに気をつけたりする必要があるため、長い文章の場合は少し大変です。このような場合、ヒアドキュメントを使用すれば簡単に書くことができます。以下はヒアドキュメントを使用した例です。

<?php

$purpose = "Webプログラミング";

echo <<< EOM
PHPとは、HTMLへの埋め込み型プログラミング言語です。<br />
正式名称は「PHP: Hypertext Preprocessor」です。<br />
PHPは{$purpose}に利用されます。<br />
<a href="detail.php">詳細を読む<a>
EOM;

?>

これでも、まったく同じ内容が出力されます。\n が無くても改行が反映され、ダブルクォートやシングルクォートのエスケープも考える必要がありません。

<<< がヒアドキュメントの合図で、この次に書いた文字が再度出現するまで、すべて出力されます。

今回は EOM という文字がありますので、再度 EOM という文字が出現するまで出力されます。EOM は End Of Message の略で付けていますが、ABC など他の文字にしても大丈夫です。ちなみに、EOM の他には EOD (End Of Document)や EOF (End Of File)という文字がよく使われます。なお、ヒアドキュメント終了のための EOM にはセミコロンを付ける必要があるので注意してください。

また、以下のようにすれば、ヒアドキュメントで変数に代入することができます。

<?php

$purpose = "Webプログラミング";

$string = <<< EOM
PHPとは、HTMLへの埋め込み型プログラミング言語です。<br />
正式名称は「PHP: Hypertext Preprocessor」です。<br />
PHPは{$purpose}に利用されます。<br />
<a href="detail.php">詳細を読む<a>
EOM;

echo $string;

?>

長い文章を変数に代入する場合に便利です。

PHPの埋め込み機能を活用する

ヒアドキュメントを使ったプログラムの全文を掲載すると、以下のようになります。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p><?php

$purpose = "Webプログラミング";

echo <<< EOM
PHPとは、HTMLへの埋め込み型プログラミング言語です。<br />
正式名称は「PHP: Hypertext Preprocessor」です。<br />
PHPは{$purpose}に利用されます。<br />
<a href="detail.php">詳細を読む<a>
EOM;

?></p>
</body>
</html>

ですがPHPの「HTML文章にプログラムを埋め込む形式で書く」という手法を活用すれば、ヒアドキュメントを使わずに以下のように書くこともできます。

<?php

$purpose = "Webプログラミング";

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>サンプル</title>
</head>
<body>
<p>PHPとは、HTMLへの埋め込み型プログラミング言語です。<br />
正式名称は「PHP: Hypertext Preprocessor」です。<br />
PHPは<?php echo $purpose; ?>に利用されます。<br />
<a href="detail.php">詳細を読む<a></p>
</body>
</html>

出力結果は同じですが、最低限必要な部分のみを <?php?> で囲っています。このようにすれば、PHPプログラムがまったく解らない人でも、比較的容易にHTML部分を修正できるようになります。(「<?php?> の内容はいじらないで」と伝えておけば、他の部分は通常のHTML文章とまったく同じように編集できます。)

「どの書き方が一番すぐれている」というのはありませんので、必要に応じて書き方を選択してください。