【问题标题】:T_INLINE_HTML? What's wrong with this?T_INLINE_HTML?这有什么问题?
【发布时间】:2011-06-23 12:20:53
【问题描述】:
<? switch($data['type']) : ?>
<? case 'log': ?>

    <? while ($row = $data['loop']->fetch()) : ?>
        <table class="t-errors">
            <tr>
                <td>
                    <b>IP:</b> <? echo $row['LogShellIP']; ?>
                    <b>Command:</b> <? echo $row['LogShellCommand']; ?>
                    <b>Executed:</b> <? echo $row['LogShellReturn']; ?>
                    <b>Time:</b> <? echo format::time($row['LogShellTime']); ?>
                </td>
            </tr>
        </table>
    <? endwhile; ?>

<? break; ?>

<? case 'fatal': ?>
<? case 'warning': ?>
<? case 'notice': ?>
<? case 'unknown': ?>

    <? while ($row = $data['loop']->fetch()) : ?>
        <table class="t-errors">
            <tr>
                <td <? if ($row['LogErrorSeen'] == 0) { echo 'class="e-selected"'; } ?>>
                    <b>String:</b> <? echo $row['LogErrorString']; ?>
                    <b>File:</b> <? echo $row['LogErrorFile']; ?>
                    <b>Line:</b> <? echo $row['LogErrorLine']; ?>
                    <b>Context:</b> <? echo $row['LogErrorContext']; ?>
                    <b>Ip:</b> <? echo $row['LogErrorIP']; ?>
                    <b>Time:</b> <? echo format::time($row['LogErrorTime']); ?>
                </td>
            </tr>
        </table>
    <? endwhile; ?>

<? break; ?>
<? endswitch; ?>                    

我收到此错误:

解析错误:语法错误,意外 T_INLINE_HTML,期待 T_ENDSWITCH 或 T_CASE 或 T_DEFAULT 在 /Applications/XAMPP/xamppfiles/htdocs/Smooth 框架/tpl/terminal.tpl.php上线 33

其中33 行是此脚本的2 行。这被插入到模板上下文中。这有什么问题?他期待的是T_CASE,就是这样!

【问题讨论】:

  • 错误可能潜伏在您省略的 31 行中的任何一行中
  • 首先,不要使用短标签。并且不要像那样不断地闯入和跳出 PHP 上下文,这真的丑陋。如果你解决了这个问题,你可能会发现错误会立即消失。
  • @Mchl,一点也不。 PHP 错误行总是指前一行或当前行。所以第 33 行中的错误可能在第 33 行或第 32 行,而不是之前的。既然显示的是 32,那为什么 PHP 没有停在 32 呢?
  • @Charlie:在这种情况下,你是对的。但在一般情况下,错误可能出现在文件中的任何位置。引用的行号仅是 compiler/parser 发现错误的地方,而不是实际发生的地方。它可能是 30 行回来。在这种情况下不是。重新格式化你的代码,你会没事的......
  • @Charlie Pigarelli:不要那么确定 ;) 根据您在前几行中的内容,// 注释中缺少逗号或 ?&gt; 可能会在下面显示许多行.

标签: php html switch-statement


【解决方案1】:

合并第 1 行和第 2 行

  <? switch($data['type']):
     case 'log': ?>

查看link 中的评论(jeremia at gmx dot at 28-Jan-2008 02:52)

【讨论】:

【解决方案2】:

解析器需要一个 T_CASE 标记,但在 switch($data['type']) : ?&gt; 之后找到换行符。

switch (1) : ?> <? case 1: break; endswitch;

给出一个解析错误,

switch (1) : ?>\n<? case 1: break; endswitch;

同时

switch (1) : ?><? case 1: break; endswitch; 

没有。 ;-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2012-05-26
    相关资源
    最近更新 更多