0%

Programmingプログラミングナレッジ

Posted:2019.06.21

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などを扱う場合にはヒアドキュメントを使用することで、すっきりと見た目もわかりやすく記述することができます。バグの発生なども防げると思いますので、ぜひ積極的に使用していきたいですね。

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ