string – PHP heredoc解析错误

这会产生输出页面OK

$mystring = "<<<EOT";

用以下产品替换它

Parse error: syntax error, unexpected $end in file.php on line 737

$mystring = <<<EOT
   This is some PHP text.
   It is completely free
   I can use "double quotes"
   and 'single quotes',
   plus $variables too, which will
   be properly converted to their values,
   you can even type EOT, as long as it
   is not alone on a line, like this:
EOT;

关于是什么导致解析器窒息的任何想法?

我使用的是PHP 4.4.7.

只有一个文件才会发生此行为,所有其他行为都遵循PHP定义的功能.

我试图重述的是在程序行中可能出错的地方,以便PHP解析器在此失败中显示.

约翰

将文件内容更改为: –

<?php

$mystring = <<<WHATEVER
   This is some PHP text.
WHATEVER;
?>

结果=

解析错误:语法错误,第5行的file.php中的意外$end

任何线索

编辑

原始错误与T_ENCAPSED_AND_WHITESPACE有关,这可能是由jQuery引起的,例如“if(x == y){$(‘#my_image’).hide():}”在heredoc内是bigram“{$将启动解析器寻找替代的php变量.

编辑

2个好的回答.

1)Ch4m3l3on – “<?php”vs“<?”处理. 2)Disintegrator – < q>与愚蠢的程序有类似的问题,该程序坚持将BOM放入utf-8文件(忽略首选项)< / q>.

编辑

1)用单个块替换所有内容并不能解决问题或提供任何其他指针.

2)没有BOM(字节顺序标记),可惜这个或类似的majic字符会完美地解释所有症状.

解决方法:

你必须把你的结尾heredoc放在行的开头.如果您使用某些具有缩进的IDE,请将其删除!你的结尾heredoc必须与你的结束php标签垂直在同一行(

上一篇:PHP – 不能在类方法中使用Heredoc?


下一篇:如何在Ant脚本中内联几行java?