PHP
PHPで改行含む文字列を出力する方法「ヒアドキュメント」
PHPでは、改行を含む文字列を出力することができる「ヒアドキュメント」という仕組みがあります。問い合わせ内容を自分宛に、自動返信のメールを送付者側に送る問い合わせフォームで大変便利で、この仕組みを知っていると知らないではかなり違ってきますので、ご紹介したいと思います。
ヒアドキュメントの記述方法
以下の「<<< EOM」から「EOM;」までの部分です。
<?php
$your_name = 'お名前'
$content = <<< EOM
{$your_name} 様
お問い合わせいただき、
まことにありがとうございます。
内容確認のうえ、ご返信いたしますので、
しばらくお待ちください。
EOM;
echo $content;
?>
EOMの部分は何でもよく、大文字の3文字でよく使われるのは「EOM」「EOF」「EOD」などです。「EOM」は End of Message、「EOF」は End of File、「EOD」は End of Document の略です。
通常ですと、以下のように改行コードの「/n」を使うことになり、出力される文章の見え方がコーディング時点では分かりづらいという難点があり、その難点をクリアする仕組みとしてヒアドキュメントは便利というわけです。
<?php
$your_name = 'お名前'
$content = $your_name . ' 様/n/n';
$content .= 'お問い合わせいただき、/n';
$content .= 'まことにありがとうございます。/n/n';
$content .= '内容確認のうえ、ご返信いたしますので、/n';
$content .= 'しばらくお待ちください。';
echo $content;
?>
ヒアドキュメント内の変数の出力
上記の通り、
{$your_name}
という風に{}
で囲ってヒアドキュメント内で変数を出力することもできます。
注意点
大変便利なのですが、PHP7.2以前だと、最後の文字列(例:EOM;
)が含まれる行では、前後にタブ/空白によるインデントも含むことができません。EOM;
の記述を左端に寄せて書けばOKということです。
また、PHP8でも、最後の文字列(例:EOM;
)が含まれる行のインデント位置よりもインデントが少ない行を存在させると、少ない分文字が削られてしまうので、最後の行よりもインデントが少ない行を存在させないようにしましょう。
手っ取り早いのは、「<<< EOM」~「EOM;」までの行はすべてインデントを設けず、左端に寄せて書いてしまう方法です。そうすれば、上記のいずれの問題も生じ得ません。
まとめ
問い合わせフォームの文章作成などで大変便利なPHPのヒアドキュメントのご紹介でした。JavaScriptでは現時点このような仕様は用意されていません。