menu
ホーム > PHPサンプル > 文字列系 > PHP ヒアドキュメント
PHPサンプル

UPDATE:2022年06月08日

PHP ヒアドキュメント

PHP ヒアドキュメント | wepicks!
PHP4 PHP5 PHP7 PHP8

ヒアドキュメント

書式
<<<任意ID
~~
任意ID
;


<<<"任意ID"
~~
任意ID
;

一般的なID名
EOF(End of File)
EOD(End of Document)
EOM(End of Message)

サンプル
<?php
echo <<<EOD
文字列<br>
文字列<br>
EOD;
?>

<?php
$string = <<<"EOD"
文字列<br>
文字列<br>
EOD;
echo $string;
?>

文字列の出力 ヒアドキュメント

PHP で文字列を出力する方法にヒアドキュメントがあります。複数行の文字列やエスケープ文字が含まれる文字列を出力するのに便利です。例えば、ヒアドキュメントでは \n が無くても改行が反映され、echo や print で出力するのとは違って、ダブルクォート や シングルクォート のエスケープを行う必要もありません。

書式

<<<任意ID
~~
任意ID
;


<<<"任意ID"
~~
任意ID
;

結果は

PHPはウェブ開発に最適化された言語です。
もともと動的なウェブコンテンツを作成するために開発されました。
そのため、HTMLへ容易に組み込むことが出来ます。

となります。

ヒアドキュメント構文 <<< 任意ID ~ 任意ID;

文字列を指定する方法としてヒアドキュメント構文 "<<<" が利用できます。これは、任意のIDを "<<<" の後に指定し、それに続けて改行文字を配置し、さらに続けて任意の文字列を記述した後で、同じID(終端ID)で括りを閉じます。複数行の文字列を扱うのに便利です。シングルクォート、ダブルクォート、空白はそのまま出力されます。ヒアドキュメントはダブルクォートで括る必要はありませんが、ダブルクォートで括られた文字列と全く同じ動作をします。PHP5.3からヒアドキュメントの宣言をダブルクォートで括ることが可能になりました。"EOD" というように最初のIDをダブルクォートで括って宣言が可能です。

結果は

'文字列' "文字列" .文字列. 文字列

となります。

PHP5.3からヒアドキュメントの宣言をダブルクォートで括れる

結果は

'文字列' "文字列" .文字列. 文字列

となります。

ID名

一般的なID名として、EOF(End of File)、EOD(End of Document)、EOM(End of Message)などが利用されます。命名規則は、1文字目はアンダースコアか数字以外の文字で始まり、2文字目以降は英数字およびアンダースコアのみを含む文字列で指定します。

ヒアドキュメントの利便性

ヒアドキュメントで指定する文字列はダブルクォートで括る必要はありませんが、ダブルクォートで括られた文字列と全く同じ動作をします。指定文字列内の変数も変遷展開されます。echo や print で出力するのとは違って、「'(シングルクォート)」 や 「"(ダブルクォート)」 を「\(バックスラッシュ)」でエスケープする必要がありません。また、\n が無くても改行が反映されます。複数行に渡る複雑な文字列を出力するのにとても便利です。echo で出力する場合と比べてみましょう。

echo '';で出力

echo と「'(シングルクォート)」で文字列を出力する場合、文字列の中に「'(シングルクォート)」が含まれていれば、「\(バックスラッシュ)」でエスケープする必要があります。また、「'(シングルクォート)」内の文字列は変数展開されないので、文字列を ' で一旦区切り「.(ドット)」で文字列を連結させて文字列の外で変数を展開させる必要があります。ソースコード上で改行させる場合も改行コード「\n」を入力する必要があります。

結果は

本サイトのURLは'https://wepicks.net/'です。
サイト名は'ウィーピックス'です。
ウェブ関連の情報を発信しています。

となります。

ヒアドキュメントで出力

指定する文字列内で「'(シングルクォート)」や「"(ダブルクォート)」を「\(バックスラッシュ)」でエスケープする必要がありません。変数も展開されます。改行コード「\n」も自動で挿入されるので、ソースコードで閲覧すると改行されます。

結果は

本サイトのURLは'https://wepicks.net/'です。
サイト名は'ウィーピックス'です。
ウェブ関連の情報を発信しています。

となります。

インデント

PHP7.3以前では、終端ID がある行には、セミコロン(;)以外の文字を含んではいけませんでした。これは、ID をインデントしてはならず、また、セミコロンの前に空白やタブを付けてはいけないということです。終端 ID の前の最初の文字は、使用するオペレーティングシステムで定義された改行である必要がありました。

PHP7.3以前では、以下はエラーになります。

PHP7.3 以降では、終端ID は、スペースまたはタブでインデントできます。 その場合、終端IDの行でインデントされた部分は文字列の全ての行から取り除かれます。

ソースコード上で確認すると結果は

      a
     b
    c

  a
 b
c

となります。

インデントを挿入する場合、タブとスペースを混ぜてはいけません。

サンプルコード

– サンプル Click Here ! –

実行結果
「ヒアドキュメント」文字列の出力
PHPはウェブ開発に最適化された言語です。
もともと動的なウェブコンテンツを作成するために開発されました。
そのため、HTMLへ容易に組み込むことが出来ます。

「ヒアドキュメント」文字列の出力 変数に格納
PHPはウェブ開発に最適化された言語です。
もともと動的なウェブコンテンツを作成するために開発されました。
そのため、HTMLへ容易に組み込むことが出来ます。

「ヒアドキュメント」シングルクォートやダブルクォートが含まれる文字列の出力
'文字列'
"文字列"
.文字列.
文字列

「ヒアドキュメント」文字列の出力 宣言をダブルクォートで括る
Hello World!

複数行の文字列の出力「echo」の場合
本サイトのURLは'https://wepicks.net/'です。
サイト名は'ウィーピックス'です。
ウェブ関連の情報を発信しています。

複数行の文字列の出力「ヒアドキュメント」の場合
本サイトのURLは'https://wepicks.net/'です。
サイト名は'ウィーピックス'です。
ウェブ関連の情報を発信しています。

「ヒアドキュメント」のインデント
a
b
c

a
b
c

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2021年11月25日
最終更新日:2022年06月08日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpsample-string-heredoc/trackback/

page top