在字符串中定义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;
感谢。
答案 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;
感谢帮助人员。