我误解了heredoc应该做什么吗?

时间:2011-05-19 12:27:17

标签: php heredoc

我是PHP的新手,所以我知道我在这里遗漏了一些明显的东西 - 我认为heredoc函数应该保留格式,换行符等。 但每当我测试它时,在解析时,没有格式化。 我尝试过很多不同的脚本,包括来自PHP.net和W3schools等来源的复制和过去 - 所以我知道脚本没有任何问题。不能谷歌回答这一个 - 可能是因为它太明显了? (顺便说一下,用MAMP测试)。谢谢。

4 个答案:

答案 0 :(得分:4)

HEREDOC不是一个函数,它是一种指定字符串分隔符的方法,它允许你放弃在heredoc中转义引号(我喜欢它,因为好的文本编辑器会根据heredoc名称突出显示它们的内容)。

HEREDOCs 保留所有空格,换行符等。我认为您可能正在浏览器中查看结果。浏览器通常会修剪所有空格,换行符,空格和制表符,直到单个空格。尝试在命令行,文本电子邮件或文本文件中查看它。

答案 1 :(得分:3)

它将生成一个与您设置的字符串相同的字符串。

但是,浏览器会将多个空格压缩为一个空格字符。这是设计的。

要保留空间,可以使用pre元素(假设默认浏览器样式表)或white-space: pre CSS属性。

<div style="white-space: pre">
<?php echo <<<A
some text
    preserved
        just
    how
 you want it.
A; ?>
</div>

jsFiddle

答案 2 :(得分:3)

因为您说“使用MAMP进行测试”我假设您使用webbrowser来显示内容。这是一个稍微错误的方法,因为webbrowser本身剥离了任何不必要的空格。查看您在浏览器中显示的页面来源,您将看到“真实”的内容。

答案 3 :(得分:0)

确实如此,但仅限于输出内容。

如果它输出HTML,则浏览器将使用处理空格的常规规则来解释该HTML。