我对 PHP 很陌生,所以我知道我在这里遗漏了一些明显的东西——我认为 heredoc 函数应该保留格式、换行符等。但是每当我测试它时,在它解析时,没有格式。我尝试了很多不同的脚本,包括来自 PHP.net 和 W3schools 等来源的复制和粘贴——所以我知道这些脚本没有任何问题。不能用谷歌搜索这个答案 - 可能是因为它太明显了?(顺便说一句,使用 MAMP 进行测试)。谢谢。
问问题
2086 次
4 回答
4
HEREDOC 不是一个函数,它是一种指定字符串分隔符的方法,允许您在 heredoc 中放弃转义引号(我喜欢它,因为好的文本编辑器会根据 heredoc 名称语法突出显示其内容)。
HEREDOC确实保留了所有空格、换行符等。我认为您可能正在浏览器中查看结果。浏览器通常会将所有包含的空格、换行符、空格和制表符修剪为一个空格。尝试在命令行、文本电子邮件或文本文件中查看它。
于 2011-05-19T12:29:56.970 回答
3
它将产生一个与您设置的字符串相同的字符串。
但是,浏览器会将多个空格压缩为一个空格字符。这是设计使然。
要保留您的空间,您可以使用pre
元素(假设默认浏览器样式表)或white-space: pre
CSS 属性。
<div style="white-space: pre">
<?php echo <<<A
some text
preserved
just
how
you want it.
A; ?>
</div>
于 2011-05-19T12:30:50.887 回答
3
因为您说“使用 MAMP 进行测试”,所以我假设您使用 Web 浏览器来显示内容。这是一个稍微错误的方法,因为网络浏览器本身会删除任何不必要的空格。查看您在浏览器中显示的页面的来源,您将看到“真实”的内容。
于 2011-05-19T12:31:20.410 回答
0
它确实如此,但仅限于它的输出。
如果它输出 HTML,那么该 HTML 将由浏览器使用处理空格的常规规则来解释。
于 2011-05-19T12:30:57.940 回答