Php 我是否误解了heredoc应该做什么?

Php 我是否误解了heredoc应该做什么?,php,heredoc,Php,Heredoc,我对PHP非常陌生,所以我知道我在这里遗漏了一些明显的东西- 我认为herdeoc函数应该保留格式、换行符等。 但是每当我测试它时,当它解析时,没有格式化。 我尝试过很多不同的脚本,包括来自PHP.net和W3schools等源的copy和Past,所以我知道这些脚本没有任何问题。谷歌搜索不出这个问题的答案-可能是因为它太明显了??(顺便说一句,使用MAMP进行测试)。谢谢 herdeoc不是一个函数,它是一种指定字符串分隔符的方法,允许您放弃herdeoc中的转义引号(我喜欢它,因为好的文本编

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

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


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

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

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

要保留空格,可以使用
pre
元素(假定为默认浏览器样式表)或
空白:pre
CSS属性

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


确实如此,但仅限于其输出


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

因为您说的是“使用MAMP测试”,我认为您使用webbrowser来显示内容。这是一个稍微错误的方法,因为webbrowser本身会去除任何不必要的空白。查看您在浏览器中显示的页面的源代码,您将看到“真实”的内容。

能否附上一些示例代码,并解释您希望从中得到什么?谢谢谢谢Tandu!我确实在浏览器中查看。抱歉,如果这个问题再次太明显。。。一旦上传到我的服务器,浏览器是否会对它与MAMP进行不同的处理?我想我正在寻找在HTML和PHP之间移动的最佳方式。PHP应该完全相同地处理HTML,但不能保证浏览器将如何处理HTML。只需在所有主要浏览器中进行测试,并找到最佳折衷方案(对于纯文本,您通常可以)。