【发布时间】:2010-11-18 23:36:24
【问题描述】:
这会产生输出页面 OK
$mystring = "<<<EOT";
将其替换为以下产品
解析错误:语法错误,第 737 行的 file.php 中出现意外 $end
$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 中,二元组“{$ 将启动解析器寻找用于替换的php 变量。
编辑
2 个很好的回应。
1) Ch4m3l3on - "<?php" 与 "<?" 处理。
2) Disintegrator - <q>在一个愚蠢的程序中遇到了类似的问题,该程序坚持将 BOM 放入 utf-8 文件(忽略首选项)</q>。
编辑
1) 用单个块替换所有内容并不能解决问题或提供任何其他指示。
2)没有BOM(字节顺序标记),可惜这个或类似的majic字符可以完美地解释所有症状。
【问题讨论】:
-
是时候升级到至少 5.1,最新稳定版是 5.3 :D
-
你能告诉我哪一行是 737 吗?是EOT吗?行吗?
-
第 737 行小于文件中的行数,但不是 $mystring= 行,即第 1063 行 - 看图
-
检查文件的编码。前段时间我有一个类似的问题,一个愚蠢的程序坚持将 BOM 放在 utf-8 文件中(忽略首选项)
-
注意:我不是在寻找为什么 heredoc 编码错误,因为它编码正确。这就是为什么我把第一行 $mystring = "