<?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;
当我运行它时报告:
Parse error: parse error on line 2
但我没有看到任何异常。
答案 0 :(得分:5)
我认为问题是您应该使用$output = <<<END
代替$output = <<< END
(请注意缺少空间)
echo <<<END
heredoc string...
END;
确保END
之前或之后没有空格,即使是一个无关的空间也可能导致问题。查看您发布的代码,您似乎在END
之前和之后都有空格。
来自php website:
警告
非常重要的是要注意到 具有结束标识符的行必须 不包含其他字符 可能是分号(;)。这意味着 特别是标识符可能不会 缩进,可能没有 在之前或之后的空格或制表符 分号。这也很重要 意识到第一个角色 在结束标识符之前必须 由本地定义的换行符 操作系统。这是UNIX上的\ n 系统,包括Mac OS X. 关闭分隔符(可能跟随 必须遵循分号 换行。
如果此规则被破坏并结束 标识符不是“干净”,它不会 被视为结束标识符, PHP将继续寻找一个。 如果没有正确的结算标识符 在当前结束之前发现 文件,将导致解析错误 最后一行。
答案 1 :(得分:2)
它应该是<<<END
(没有空格)。
示例:
<?php
echo <<<END
Heredoc string.
END;
答案 2 :(得分:1)
在我的localhost上使用以下输出没有错误。
<?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;
像其他提到的那样,我只是摆脱了空间。