Heredoc 不在单独的行中打印文本

Heredoc not printing text in separate lines

<?php
echo <<<EOT
First
Second
Third
EOT;
?>

输出:第一第二第三

输出不应该是这样的-

第一个

第二

第三

?

如果不是,那么 heredoc 的用途是什么?它与双引号字符串有何不同?

脚本正在输出

First
Second
Third

但是浏览器将其解释为 HTML 文档,默认情况下它换行。改成

<?php
echo <<<EOT
First
<br>
Second
<br>
Third
EOT;
?>

你会得到你期望的结果。

how is it different from a double quoted string?

Heredocs 可以更轻松地处理包含嵌套引号的字符串,因为您不必对它们进行转义。这在创建具有属性的 HTML 元素时特别方便。比较:

echo "<a href=\"$url\">Some text</a>";

echo <<<EOT
<a href="$url">Some text</a>
EOT;

(是的,我知道你也可以通过在 $url 周围加上单引号来解决这个问题——给猫剥皮的方法有很多。)