首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >heredoc语句的问题

heredoc语句的问题
EN

Stack Overflow用户
提问于 2009-08-03 14:23:40
回答 6查看 2.7K关注 0票数 3

我正在尝试用一个heredoc语句替换HTML代码。但是,在最后一行中,我得到了一个解析错误。我确信,我没有在本文档的结束标记line.Following is 上留下任何前导空间或缩进,这是代码的一部分:

代码语言:javascript
复制
$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代码之间来回跳动。那么,哪一种是首选的方法?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-08-04 09:19:57

伙计们,我终于成功地消除了解析错误(啊!!)。我刚刚重写了代码,它起作用了。以下是代码:

代码语言:javascript
复制
$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;
票数 1
EN

Stack Overflow用户

发布于 2009-08-03 14:55:35

来自关于Heredoc语法的PHP手册

结束标识符必须从行的第一列开始

稍后在漂亮的红色警告框里:

值得注意的是,带有结束标识符的行必须不包含其他字符,除非可能一个分号(;)。这尤其意味着标识符可能不是缩进的,在分号之前或之后可能没有任何空格或制表符。

因此,您需要像这样编写代码,以符合语法规范:

代码语言:javascript
复制
$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;

如果你真的想用它,那就看你的了。

票数 6
EN

Stack Overflow用户

发布于 2009-08-03 14:28:13

如果这段代码正是您所使用的,那么除了第一行$table = <<

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1222638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档