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

Posted

技术标签:

【中文标题】Heredoc不在单独的行中打印文本【英文标题】:Heredoc not printing text in separate lines 【发布时间】:2021-11-06 10:45:48 【问题描述】:
<?php
echo <<<EOT
First
Second
Third
EOT;
?>

输出:第一第二第三

输出不应该是这样吗-

第一

第二

第三

?

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

【问题讨论】:

【参考方案1】:

脚本正在输出

First
Second
Third

但浏览器会将其解释为 html 文档,并且默认情况下会换行。改成

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

你会得到你期望的结果。

它与双引号字符串有何不同?

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

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

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

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

【讨论】:

浏览器的任何替代品,我可以运行 php 脚本,这样它就不会被视为 html 文档? 只需从 CLI 运行 php scriptname.php,您就会在终端上看到输出。 你也可以使用ideone.com。

以上是关于Heredoc不在单独的行中打印文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FileOutputStream 将 HashMap 分隔到单独的行中? [复制]

如何在单独的行中打印每个单词。除第一个单词外,每个单词都大写

Python - 从文件中的行中剥离时间戳和用户名

使用文本区域在多行中显示文本[重复]

来自heredoc的标准输入没有打印到屏幕上?

我需要啥循环/逻辑打印出单个数组元素的 5 行单独的行?