假设我有一个名为printuser()
现在,如果我有像
这样的字符串$myFunction = 'printuser()';
我如何将此字符串作为函数运行?所以它应该执行printuser()
函数
答案 0 :(得分:3)
查看 call_user_func
。你需要稍微改变你的字符串(没有括号)。
答案 1 :(得分:1)
答案 2 :(得分:1)
如果您只想让$myFunction
指定要运行的功能,您可以执行类似
$myFunction = 'printuser';
$myFunction();
这称为“variable function”,其危险性略低于eval
。 (您可以调用任何现有函数,但不能运行任意代码。)
但请注意:如果printuser
不存在,脚本将会死亡。在调用函数之前,您可以考虑检查函数是否存在。
$myFunction = 'printuser';
if (function_exists($myFunction))
$myFunction();
else
throw new BadFunctionCallException("Function '$myFunction' doesn't exist");
如果函数不存在,请将throw
替换为您想要执行的操作。这只是一个例子。
答案 3 :(得分:0)
你可以尝试
$myFunction = 'printuser()';
# Remove brakets
$myFunction = rtrim($myFunction, "()");
# Call Function Directly
$myFunction();
要进行验证,您可以使用is_callable
is_callable($myFunction) and $myFunction();
答案 4 :(得分:0)
有失败保障的建议:
$function = str_replace("()", "", $input);
if( function_exists($function))
{
$function();
}
else
{
// ignore or show an error
}