有没有办法在运行时将字符串转换为函数?

时间:2016-10-23 00:20:18

标签: php

说我有这个

$src = "function($message) { echo $message; }"

我正在寻找一种在运行时将源字符串转换为实际函数的方法,类似于

$say_message = magic_command($src);
$say_message("hello");

但我还没有办法做到这一点。

如果您正在考虑目的,我将从大字符串中提取数据。为了更简单地改变程序,我创建了一种中间语言(正则表达式真的不会在这里做),我现在正在评估它。我想把程序变成一个php本机函数可能会加快处理..值得一试。安全性不是问题,我是唯一一个使用它的人。

1 个答案:

答案 0 :(得分:1)

$src = '$say_message = function($message) { echo $message; };';
eval($src);
$say_message("hello");

这是让$ say_message通过字符串作为函数运行的实际方法,您必须使用eval(),确保在代码中添加正确的;

还有另一种方法可以使用create_function()

创建它,但不能从单个字符串创建它
$say_message = create_function('$message','echo $message;');
$say_message("hello");