【问题标题】:Parse error: syntax error, unexpected $end in E:\xampp\htdocs\announcements\announcement.php on line 143解析错误:语法错误,第 143 行 E:\xampp\htdocs\announcements\announcement.php 中的意外 $end
【发布时间】:2010-12-20 21:55:02
【问题描述】:

我收到此错误消息

解析错误:语法错误,意外 $结束 E:\xampp\htdocs\announcements\announcement.php 在第 143 行

第 143 行是 PHP 文件的最后一行。 当我注释掉

$htmlcode=<<<eod
<div>$question</div>
<div>$option1  $option2  $option3  $option4</div><br/>
eod;    
echo $htmlcode;

错误消失了。 怎么了?

【问题讨论】:

    标签: php debugging parsing


    【解决方案1】:

    eod; 后面有空格

    manual中所述

    请务必注意, 必须与结束标识符行 不包含其他字符,除了 可能是分号 (;)。这意味着 特别是标识符可能不会 缩进,并且可能没有任何 之前或之后的空格或制表符 分号。同样重要的是 意识到第一个字符 必须在结束标识符之前 本地定义的换行符 操作系统。这是 UNIX 上的 \n 系统,包括 Mac OS X。 结束分隔符(可能跟在后面 分号)也必须跟在后面 换行符。

    【讨论】:

      【解决方案2】:

      我发现在你的eod; 之后,你有一些空格。

      删除空格,它会正常工作。

      测试:

      <?php
      $htmlcode=<<<eod
      <div>$question</div>
      <div>$option1  $option2  $option3  $option4</div><br/>
      eod;
      echo $htmlcode;
      ?>
      

      【讨论】:

      • 酷。正中目标!天才。
      • 没什么,只是运行代码并尝试不同的方法来查看问题所在。
      【解决方案3】:

      {}heredoc 块中的变量名括起来,如下所示:

      $htmlcode=<<<eod
      <div>{$question}</div>
      <div>{$option1}  {$option2}  {$option3}  {$option4}</div><br/>
      eod;
      echo $htmlcode;
      

      问题在于 PHP 会因为没有空格将 $question$option4 变量与开始 &lt; 用于结束 div 标记这一事实而窒息。

      另外,请确保eod 分隔符后面的分号后没有没有空格。该行唯一允许的是您的分隔符和分号(如有必要)。

      【讨论】:

      • 其实不然。你试过代码了吗?
      • 嗯,我的意思是关于变量。关于空格的部分是真的。
      • 不是直接的。但是个人使用 PHP 的经验让我花了好几个小时都在调试这样的问题。
      • 也许这毕竟不是那么糟糕的建议。
      猜你喜欢
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2013-06-20
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      相关资源
      最近更新 更多