我知道通过使用eval($code_to_check);
我们可以检查这个值是否相等FALSE
,如果是,我们可以停止脚本的执行。但是,我面临的问题是我无法定义一个函数,因为它被调用了两次......它被 eval() 检查处理以确保没有语法错误,然后再次处理该函数,但显示一个错误,指出它不能 REDECLARE 这个函数,因为它已经在 eval'd 函数中声明。我怎样才能做到这一点,以便我们不在 EVAL'd 函数中声明事物,或者我们可以在实际调用 eval() 函数之前取消声明在 eval() 函数中声明的所有内容......
无论如何,这是我目前正在使用的......可以使用一些帮助,因为当 $content (这是 php 代码)中有一个函数时,我得到一个“不能重新定义函数”。
// PHP Syntax errors?
if (!@eval('return true;' . $content))
{
// Error found in PHP somewhere. Call error function and return out of here!
call_user_func_array($code_error['function'], $code_error['params']);
return;
}
else
{
ob_start();
eval($content);
$code = ob_get_contents();
ob_end_clean();
}
任何人都可以在这里帮助我吗?谢谢大家,你们在这里都非常有帮助!你们都应该获得金牌,但我相信奥运会现在结束了,这还不是一项运动......
好的,我在这里尝试自己的答案,并想知道这是否仍会捕获错误并允许同时创建函数而无需两次调用这些函数。这是这样做的正确方法吗?任何人都可以在此代码中看到任何可能的问题吗?如果没有检测到语法错误,我将回显 $eval_code... 这可以吗?
$eval_code = @eval($content);
// PHP Syntax errors?
if ($eval_code === FALSE)
{
call_user_func_array($code_error['function'], $code_error['params']);
return;
}
else
{
ob_start();
echo $eval_code;
$code = ob_get_contents();
ob_end_clean();
}