3

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

4

4 回答 4

4

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

HEREDOC确实保留了所有空格、换行符等。我认为您可能正在浏览器中查看结果。浏览器通常会将所有包含的空格、换行符、空格和制表符修剪为一个空格。尝试在命令行、文本电子邮件或文本文件中查看它。

于 2011-05-19T12:29:56.970 回答
3

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

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

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

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

js小提琴

于 2011-05-19T12:30:50.887 回答
3

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

于 2011-05-19T12:31:20.410 回答
0

它确实如此,但仅限于它的输出。

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

于 2011-05-19T12:30:57.940 回答