在PHP中使用heredoc语法时遇到麻烦

wam*_*amp 0 php heredoc

<?php
        $output = <<< END 
        <table style="display: table;" class="listview rowstyle-rowhighlight" id="resourcegrid">
          <thead>
            <tr>
              <th width="70"></th>
              <th style="-moz-user-select: none;" class="sortable fd-column-0"><a class="fdTableSortTrigger" href="#">Name</a></th>
              <th style="-moz-user-select: none;" class="sortable fd-column-1"><a class="fdTableSortTrigger" href="#">Contributor</a></th>
              <th style="-moz-user-select: none;" class="sortable fd-column-3"><a class="fdTableSortTrigger" href="#">Modified</a></th>
            </tr>
          </thead><tbody>
END;

echo $output;
Run Code Online (Sandbox Code Playgroud)

当我运行它时报告:

Parse error: parse error on line 2
Run Code Online (Sandbox Code Playgroud)

但我没有看到任何异常.

zmb*_*ush 5

我相信问题是你应该用$output = <<<END而不是$output = <<< END(注意缺少空间)

echo <<<END
heredoc string...
END;
Run Code Online (Sandbox Code Playgroud)

确保在END一个外部空间可能导致问题之前或之后没有空间.查看您发布的代码,您似乎在之前和之后都有空格END.

来自php网站:

警告

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

如果此规则被破坏且结束标识符不是"干净",则不会将其视为结束标识符,PHP将继续查找.如果在当前文件结束之前未找到正确的结束标识符,则将在最后一行产生解析错误.