首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这些Heredoc和Nowdoc会导致错误?

为什么这些Heredoc和Nowdoc会导致错误?
EN

Stack Overflow用户
提问于 2013-05-25 09:48:51
回答 6查看 12.3K关注 0票数 6

我已经找到了一些解决方案,但不知道发生了什么。

示例1:

代码语言:javascript
复制
<?php

echo <<< EOD
test
EOD;

示例2:

代码语言:javascript
复制
<?php

echo <<< 'EOD'
test
EOD;

输出1,2:

代码语言:javascript
复制
PHP Parse error:  syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN)

示例3:

代码语言:javascript
复制
<?php

echo <<< EOD
test
EOD;

?>

示例4:

代码语言:javascript
复制
<?php

echo <<< 'EOD'
test
EOD;

?>

示例5:

代码语言:javascript
复制
<?php

echo <<< EOD
test
EOD;
'dummy';

示例6:

代码语言:javascript
复制
<?php

echo <<< 'EOD'
test
EOD;
'dummy';

输出3、4、5、6:

代码语言:javascript
复制
test
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-25 10:29:55

在前两个示例中,在结束符之后可能会有空格,例如

代码语言:javascript
复制
EOD;[space]

有了这个:

代码语言:javascript
复制
<?php
echo <<<EOL
test
EOL;[space]

我知道你的错误信息,但是没有空格的,就没有错误。不管有没有结束的?>,这都是真的。

票数 7
EN

Stack Overflow用户

发布于 2015-02-09 22:49:27

结束分隔符必须从第一列开始,它前面的中不允许有空格和制表符。请注意,5.5和5.6中的情况正在发生变化

'EOD'等同于echo ' '

关于变量替换,"EOD"等同于echo " "

结束分隔符不带任何单双引号。

票数 5
EN

Stack Overflow用户

发布于 2013-05-25 14:47:05

Heredoc非常挑剔。确保在初始EOD后没有空格。最后的EOD;必须在它自己的行上,前面没有空格,该行上没有其他内容。正是这些空间给大多数人带来了麻烦。

而且“EOD”周围的引号也没有必要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16745654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档