我已经找到了一些解决方案,但不知道发生了什么。
示例1:
<?php
echo <<< EOD
test
EOD;示例2:
<?php
echo <<< 'EOD'
test
EOD;输出1,2:
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:
<?php
echo <<< EOD
test
EOD;
?>示例4:
<?php
echo <<< 'EOD'
test
EOD;
?>示例5:
<?php
echo <<< EOD
test
EOD;
'dummy';示例6:
<?php
echo <<< 'EOD'
test
EOD;
'dummy';输出3、4、5、6:
test发布于 2013-05-25 10:29:55
在前两个示例中,在结束符之后可能会有空格,例如
EOD;[space]有了这个:
<?php
echo <<<EOL
test
EOL;[space]我知道你的错误信息,但是没有空格的,就没有错误。不管有没有结束的?>,这都是真的。
发布于 2015-02-09 22:49:27
结束分隔符必须从第一列开始,它前面的中不允许有空格和制表符。请注意,5.5和5.6中的情况正在发生变化
'EOD'等同于echo ' ',
关于变量替换,"EOD"等同于echo " "。
结束分隔符不带任何单双引号。
发布于 2013-05-25 14:47:05
Heredoc非常挑剔。确保在初始EOD后没有空格。最后的EOD;必须在它自己的行上,前面没有空格,该行上没有其他内容。正是这些空间给大多数人带来了麻烦。
而且“EOD”周围的引号也没有必要。
https://stackoverflow.com/questions/16745654
复制相似问题