PHPのヒアドキュメントの書き方・使い方

PHPで、入力内容をそのまま変数に格納したりechoしたりできるヒアドキュメントの使い方をまとめました。

ヒアドキュメントとは

PHPのヒアドキュメントとは、主に長い文字列・改行の入った文字列をそのまま変数に格納したりするために使用します。

基本的な書き方

$変数 = <<<任意の文字列
 
~ここに中身を自由に記述~
 
最初に指定した任意の文字列;

最初と最後に任意の文字列を設定します。

PHPプログラマーの慣習で「End Of Message」の頭文字をとった「EOM」が利用されやすいです。

$str = <<<EOM
こんにちは。
僕の名前は太郎です。
EOM;

echo $str;
こんにちは。 僕の名前は太郎です。

変数に格納せず、そのままechoによる出力も可能です。

echo <<<EOM
こんにちは。
僕の名前は太郎です。
EOM;

ヒアドキュメントで変数を使用する

ヒアドキュメント内で変数を使用したい場合は、{$変数}という構文を使用します。

$user = '太郎';

$str = <<<EOM
こんにちは。
僕の名前は{$user}です。
EOM;

echo $str;
こんにちは。 僕の名前は太郎です。

ヒアドキュメントで改行を反映

改行が大量に入った長文などを変数に格納するのに便利なヒアドキュメントですが、改行タグがない限りは改行を反映されません。

改行をechoの表示に反映させたい場合は、brタグが必要です。

$str = <<<EOM
こんにちは。<br>
僕の名前は太郎です。
EOM;

echo $str;

もしくは、出力結果の変数にnl2br関数を通せば改行コードが自動的に追加されます。

$str = <<<EOM
こんにちは。
僕の名前は太郎です。
EOM;

echo nl2br($str);
こんにちは。
僕の名前は太郎です。

ヒアドキュメントの利用シーン例

クオーテーション混じりの文字列を変数に格納したい場合に便利

ヒアドキュメントはシングルクオーテーション、ダブルクオーテーションが入り混じった文字列も変数に格納できます。

通常文字列を変数に代入する際は、シングルクオーテーション、またはダブルクオーテーションで囲う必要があるので、文字列内でクオーテーションを使用したい場合は\でエスケープ処理を施す必要があります。

$str = '<div class=\'test\'>テスト</div>';

ヒアドキュメントはクオーテーションを自由に変数内に格納できるため、長文かつクオーテーションが入りやすい埋め込み系のソースコードを変数に格納したい場合に便利です。

例えば、Googleのアクセス解析を行う埋め込みコードも簡単に変数に出来ます。

$str = <<<EOM
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga("create", "UA-99999999-1", "auto");
  ga("send", "pageview");

</script>
EOM;

PHPのヒアドキュメントは、大きな情報を変数にまとめたりする時に活用していきましょう。

さらに規模が大きかったり、プログラムの結果を変数に入れたい場合は、ob_start()が便利です。

PHPでob_startの使い方。出力タイミングを制御しよう

以上、PHPのヒアドキュメントの書き方・使い方、でした。

PHP