php eval字符串作为函数

时间:2014-02-19 20:15:33

标签: php eval

在字符串中定义php函数和调用该函数的最佳方法是什么,然后执行该代码,即eval?我试图从编码的函数中获取编码的uri的长度,并在字符串中调用。

$json_arr['my_function'] = "function hashfun1($enc_uri) { return strlen($enc_uri); } hashfun1($enc_uri);";
$hash_func = $json_arr['my_function'];
$hash_val = eval($hash_func);
print_r($hash_val); // should be length of encoded uri but displays "Parse error: syntax error, unexpected '%', expecting '&' or T_VARIABLE"
exit;

感谢。

3 个答案:

答案 0 :(得分:0)

我想你想要:

$json_arr['my_function'] = "function hashfun1($enc_uri) { return strlen($enc_uri); } hashfun1('" . $enc_uri . '");";

您错过了填充$enc_uri

不要在生产代码中这样做,尽管它有效。 eval() is evil。你被警告了。

答案 1 :(得分:0)

你需要在双引号字符串中转义“$”。并检查退货数量(eval的第二个):

$json_arr['my_function'] = "function hashfun1(\$enc_uri) { return strlen(\$enc_uri); } return hashfun1(\$enc_uri);";

答案 2 :(得分:0)

我想我需要使用call_user_func();这对我有用:$json_arr['my_function'] = function($enc_uri) { return strlen($enc_uri); }; $hash_val = call_user_func($json_arr['my_function'], $enc_uri); print_r($hash_val); exit;

感谢帮助人员。