PHP中的Eval()问题

时间:2011-04-01 10:49:28

标签: php

很久以前我写了一个RSS解析器。它工作正常,直到现在,当我转动我的错误并注意到报告。目前我不断收到很多通知,告诉我功能有问题。我试图自己解决这个问题,但我没有成功。你能帮我解决这个错误吗?

错误:

Notice: Undefined index: RSS in C:\xampp\htdocs\Dropbox\RECtus\System\sysFiles\libarys\myRSSParser.lib(103) : eval()'d code on line 1

Notice: Undefined index: LINK in C:\xampp\htdocs\Dropbox\RECtus\System\sysFiles\libarys\myRSSParser.lib(103) : eval()'d code on line 1

剧本:

function parseData($parser, $data) {
        if(!trim($data)) return;
        $RSS = '';
        $evalcode = "\$this->output";

        foreach($this->tags as $tag) {
            if(is_array($tag)) {
                list($tagname, $indexes) = each($tag);

                $evalcode .= "[\"$tagname\"]";
                if(!isset(${$tagname})) ${$tagname} = '';
                if(${$tagname}) $evalcode .= "[" . (${$tagname} - 1) . "]";
                if($indexes) extract($indexes); 
            } else {
                if(preg_match("/^([A-Z]+):([A-Z]+)$/", $tag, $matches)) {
                    $evalcode .= "[\"$matches[1]\"][\"$matches[2]\"]";
                } else {
                    $evalcode .= "[\"$tag\"]";
                }
            }
        }
        eval("$evalcode = $evalcode . '" . addslashes($data) . "';");
}

第103行是eval()行。

1 个答案:

答案 0 :(得分:2)

您为什么使用eval()

看起来你只是想连接字符串的部分,不是吗?

如果是这样,为什么不只是concatenatestrings部分?


基本上,你应该能够做这样的事情:

$this->output = array();
$this->output['...'] = 'some string';
$this->output['...'] = array();
$this->output['...']['...'] = 'some other string';