
PHPで複数行に渡る文字列を出力するときに便利なヒアドキュメント
PHPではHTMLやテキストの文字列を出力するケースも多々ありますが、複数行にわたるテキストやネスト構造のHTMLなどを扱う場合に普通の文字列として変数に入れたりするのは、コードの視認性が悪くなったり、面倒なのではないでしょうか。そこで改行を自由に使えるヒアドキュメントを使った方法について見ていきたいと思います。
まずはヒアドキュメントを使わない場合に複数行のテキストやHTMLはどのようにコード上に記述するか見ていきましょう。
【PHP】
<?php $content = '<p>色は匂へど 散りぬるを</p>'; $content .= '<p>我が世誰ぞ 常ならむ</p>'; $content .= '<p>有為の奥山 今日越えて</p>'; $content .= '<p>有為の奥山 今日越えて</p>'; echo $content ?>このように変数に連結演算子と呼ばれる「.」ドットを使って変数をつなげていくことで、改行して見えるようにしています。ただし、コードに無駄な部分があったり、記述に手間がかかったりなど少し面倒ですよね。そこでヒアドキュメントという方法を使います。実際にヒアドキュメントを使った例を見ていきます。 【PHP】
<?php $content = <<< EOD <p>色は匂へど 散りぬるを</p> <p>我が世誰ぞ 常ならむ</p> <p>有為の奥山 今日越えて</p> <p>浅き夢見じ 酔ひもせず</p> EOD; echo $content ?>まず、変数を定義するのですが、最初に「<<<」の文字を記述することで、ヒアドキュメントを定義することができます。この直後に続く文字に挟まれた部分がヒアドキュメントとして扱われます。文字の部分は上記では「EOD」という文字にしていますが、ここは自由に決めれます。ただし慣例としてEnd Of Documentの頭文字をとったEODと表記したり、近い意味の文字が使われることが多いようです。 この文字に挟まれた間の部分では改行なども自由に使えるので、見た目でも実際のものと近いイメージでテキストやHTMLを扱うことができます。実際にHTMLとして出力されるとこのような形になります。 【HTML】
<p>色は匂へど 散りぬるを</p> <p>我が世誰ぞ 常ならむ</p> <p>有為の奥山 今日越えて</p> <p>浅き夢見じ 酔ひもせず</p>このヒアドキュメントですが、いろんなところで使われていますが、このサイトでも過去記事「PHPで自動返信メール機能付きのコンタクトフォームを作成する(送信画面)」で紹介しているメールフォームでの返信メール文面などで使うこともできます。 【PHP】
<?php
function h($str) {
return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}
$name = h( $_POST['name'] );
$email = h( $_POST['name'] );
$tel = h( $_POST['tel'] );
$subject = h( $_POST['subject'] );
$messege = h( $_POST['messege'] );
$mail_admin = <<< EOD
メールフォームより下記の内容でお問い合わせがありました。
================================
【お名前】{$name}
【メールアドレス】{$email}
【電話番号】{$tel}
【お問い合わせ件名】{$subject}
【お問い合わせ内容】
{$message}
================================
EOD;
mb_send_mail("info@example.com", "お問い合わせがありました", $mail_admin, $MAIL_HEADER);
?>
このように見た目と近い形でテキストが書くことがで、「n」といった改行コードも不要なのでスッキリしますね。またヒアドキュメント内で変数を使う場合には波括弧で囲んであげます。関数は使えないので、変数に代入するなどで対応します。
注意点としては、
・ヒアドキュメントの開始文字と終了文字は合わせる
・ヒアドキュメントの終了文字直前にインデントは入れない
・ヒアドキュメントの終了文字直後には改行を入れる
などの項目についてエラーが発生しないように確認しましょう。
いかがでしょうか、PHPで複数行にわたる文字列や入れ子構造のHTMLなどを扱う場合にはヒアドキュメントを使用することで、すっきりと見た目もわかりやすく記述することができます。バグの発生なども防げると思いますので、ぜひ積極的に使用していきたいですね。categories
- WordPress(61)
- JavaScript(49)
- Vue.js(48)
- CSS(46)
- jQuery(34)
- Nuxt.js(22)
- Sass(21)
- Gulp(17)
- webpack(16)
- PHP(14)
- HTML(14)
- GSAP(11)
- React(10)
- Vite(9)
- Pug(9)
- Laravel(8)
- Cordova(8)
- Linux(7)
- Next.js(6)
- Apache(5)
- Shopify(4)
- REST API(4)
- Node.js(4)
- Smarty(3)
- Git(3)
- JSON(3)
- その他プログラミング(3)
- Google Apps API(3)
- Bootstrap(3)
- 環境構築・システム(3)
- TypeScript(2)
- EJS(2)
- RMS(2)
- Docker(2)
- Instagram API(2)
- Excel VBA(2)
- SVG(1)
- Dart(1)
- ECカートASP(1)
- Markdown(1)
- AMP(1)
- Nginx(1)
- XML(1)
- shellscript(1)
- Ruby(1)
- MySQL(1)