複数行にわたるテキストを簡単に記述できます。
echo <<<EOM This uses the "here document" syntax to output multiple lines with $variable interpolation. Note that the here document terminator must appear on a line with just a semicolon. no extra whitespace! EOM;
文字列中には変数も含められ、上記では$variableがそれです。この変数が展開される規則は、二重引用符の構文に従います。
結果のテキストを変数に代入するには、同様に
$str = <<<EOM Example of string spanning multiple lines using heredoc syntax. EOM;
とします。
識別子 (上記の例ではEOM
) は、ラベルの命名規則に従った任意の文字で指定します。なお識別子の前後には、空白やタブがあってはなりません。
位置 | 構文 |
---|---|
始端 | <<<識別子[改行文字] |
終端 | [改行文字]識別子;[改行文字] |
変数を含まずパース処理が不要ならば、ヒアドキュメントではなくNowdocを使用します。Nowdocの文章中では、すべてただの文字列として扱われます。このことを文字列リテラルと比較すると、
のように対応します。
Nowdocとするには、ヒアドキュメントの始端の識別子をシングルクォート ( ' ) で囲みます。それ以外はヒアドキュメントと同様の構文です。
echo <<<'EOT' My name is "$name". I am printing some $foo->foo. Now, I am printing some {$foo->bar[1]}. This should not print a capital 'A': \x41 EOT;Nowdoc - PHP: 文字列 - Manual