PHP解析错误...语法错误意外'(',期待T_STRING或T_VARIABLE或'{'或'$'

时间:2012-01-11 12:20:24

标签: php

我无法弄清楚这个错误的位置。第1行是<?php我也使用phpIDE应用程序,它没有显示任何错误/缺少大括号。

PHP解析错误:语法错误,意外'(',期待T_STRING或T_VARIABLE或'{'或'$'在/home/ratemy/public_html/kernel/parser.php(190):eval()第1行的代码

代码行从167 - 200 ......第190行标记在下面。

# Format replaced vars
    function do_format($value,$s) {
            global $en;
            $value = (isset($en[$value]) ? $en[$value] : @constant($value));
            $i = strtolower($s);
            if (strpos($i,'echo') || strpos($i,'define')) {
                    $value = str_replace('"','`',$value);
                    $value = str_replace(chr(39),'`',$value);
                    }
            return $value;
            }

# Execute template block
    function exec_block($start, $end, $jump = -2) {
            $this->tpi = $start - 1;
            while ($this->tpi < $end) {
                    $s = $this->templ_read();
                    $this->s = $this->template_replace_vars($s);
                    if ($this->act[$this->tpi] == 'continue_loop') return false;
                    if ($this->act[$this->tpi] == 'break_loop') {
                            $this->cancel_loop = true;
                            return false;
                            }
                    eval('$this->'.$this->act[$this->tpi].'();'); // LINE 190
                    }
            if ($jump != -2)
                    $this->tpi = $jump;
            }

# Echo a line
    function do_print() {
            echo $this->s;
            }

...摘录

还有更多的文件,我可以找出这个错误实际在哪里?

2 个答案:

答案 0 :(得分:2)

如果要调用$this->act[$this->tpi]指定名称的函数,请使用:

call_user_func(array($this, $this->act[$this->tpi]));

不要做eval,这是邪恶的。

答案 1 :(得分:1)

@ knittl写道:它在第190行,显然包含对eval()的调用“1分钟前

@ knittl是正确的 - 错误发生在您文件中的那一行。 eval()'d code on line 1表示错误位于代码的第一行,即文件parser.php的第190行上的eval()。

将它放在第190行之前的一行:

echo '$this->'.$this->act[$this->tpi].'();';

它会显示正在导致错误的eval'代码。