PHPでの文字列のくくり方「ヒアドキュメント構文」


PHPの中に改行を多く含むような長い文字列を挿入したい場合があります。例えば、メールフォーム作成での、メッセージのテンプレなどです。\nを書きまくっていては、大変見にくく、間違いも起きてしまいます。しかも、フォームの場合だと、当然ユーザーからの入力を扱うわけで、変数の値も挿入することになります。'前'.$hoge.'後'のように、文字列を連結するのも面倒です。そんなときに、「ヒアドキュメント構文」を使用します。

スポンサーリンク

普通にやると

使い方は至って簡単です。

例えば、こんな文を変数$hogeに代入したいとします。ただし、変数$weatherには今日の天気の文字列が入っています。

「今日の天気は$weatherです。
今日も一日頑張りましょう。」

これは普通にPHPでは

$hoge = '今日の天気は'.$weather.'です。\n今日も一日頑張りましょう。';

となります。

ヒアドキュメント構文を使用

ヒアドキュメント構文を使って書き換えます。まず終端文字を自分で決めます(EOF,EOM,EOTなどが多い)。ここではEOMとします。そうすると、


$hoge = <<<EOM
今日の天気は{$weather}です。
今日も一日頑張りましょう。
EOM;

このように書けます。改行をそのまま書けるので、楽ですね。変数は{}でくくって書くことができます。Smartyみたいですね。

スポンサーリンク

注意点

PHPのサイトにいろいろ書いてありますが、特に注意すべきところを挙げます。

まず、終端文字は、PHPのほかのラベルと同様に、英数字と_(アンダースコア)のみで構成され、かつ、数字でない文字 or _(アンダースコア)で始める必要があります。ユーモアのつもりで「オワタ」みたいな終端文字にしてはならないというわけですね。(笑)(する人はいないだろう)

次に、終端文字を置く行には、終端文字、セミコロン、改行文字以外のものは置いてはならないということです。特に、インデントをしてしまわないように注意しましょう。例えば、EOFを終端文字とした場合、その行は

「 EOF; if(...)...」

などとはせず、

「EOF;」

のみを書くということです。

ご覧いただきありがとうございました。

last

フォローする