我正在尝试用一个heredoc语句替换HTML代码。但是,在最后一行中,我得到了一个解析错误。我确信,我没有在本文档的结束标记line.Following is 上留下任何前导空间或缩进,这是代码的一部分:
$table = <<<ENDHTML
<div style="text-align:center;">
<table border="0.5" cellpadding="1" cellspacing="1" style="width:50%; margin-left:auto; margin-right:auto;">
<tr>
<th>Show I.D</th>
<th>Show Name</th>
</tr>
ENDHTML;
while($row = mysql_fetch_assoc($result)){
extract($row);
$table .= <<<ENDHTML
<tr>
<td>$showid2 </td>
<td>$showname2</td>
</tr>
ENDHTML;
}
$table .= <<<ENDHTML
</table>
<p><$num_shows Shows</p>
</div>
ENDHTML;
echo $table;
?>问题出在哪里?除上述问题外,我还有一个相关的问题。作为一种编码实践,在整个过程中使用PHP代码更好,还是更好地使用heredoc语法。我的意思是,在PHP模式下,脚本在HTML和PHP代码之间来回跳动。那么,哪一种是首选的方法?
发布于 2009-08-04 09:19:57
伙计们,我终于成功地消除了解析错误(啊!!)。我刚刚重写了代码,它起作用了。以下是代码:
$table = <<<ABC
<div style="text-align:center;">
<table border="0.5" cellpadding="1" cellspacing="1" style="width:50%; margin-left:auto; margin-right:auto;">
<tr>
<th>Show I.D</th>
<th>Show Name</th>
<th>Show Genre</th>
</tr>
ABC;
while($row = mysql_fetch_assoc($result))
{
extract($row);
$table .= <<<ABC
<tr>
<td>$showid2 </td>
<td>$showname2</td>
<td>$showtype2_label</td>
</tr>
ABC;
}
$table .= <<<ABC
</table>
<p>$num_shows Shows</p>
</div>
ABC;
echo $table;发布于 2009-08-03 14:55:35
来自关于Heredoc语法的PHP手册
结束标识符必须从行的第一列开始。
稍后在漂亮的红色警告框里:
值得注意的是,带有结束标识符的行必须不包含其他字符,除非可能一个分号(;)。这尤其意味着标识符可能不是缩进的,在分号之前或之后可能没有任何空格或制表符。
因此,您需要像这样编写代码,以符合语法规范:
$table = <<<ENDHTML
<div style="text-align:center;">
<table border="0.5" cellpadding="1" cellspacing="1" style="width:50%; margin-left:auto; margin-right:auto;">
<tr>
<th>Show I.D</th>
<th>Show Name</th>
</tr>
ENDHTML;
while($row = mysql_fetch_assoc($result)){
extract($row);
$table .= <<<ENDHTML
<tr>
<td>$showid2 </td>
<td>$showname2</td>
</tr>
ENDHTML;
}
$table .= <<<ENDHTML
</table>
<p><$num_shows Shows</p>
</div>
ENDHTML;
echo $table;如果你真的想用它,那就看你的了。
发布于 2009-08-03 14:28:13
如果这段代码正是您所使用的,那么除了第一行$table = <<
https://stackoverflow.com/questions/1222638
复制相似问题