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