把字符串作为PHP代码执行 eval

(PHP 4, PHP 5, PHP 7)

eval — 把字符串作为PHP代码执行

说明

eval(string $code): mixed

把字符串code作为PHP代码执行。

函数eval()语言结构是非常危险的, 因为它允许执行任意 PHP 代码。它这样用是很危险的。如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,不要允许传入任何由用户 提供的、未经完整验证过的数据

参数

code

需要被执行的字符串

代码不能包含打开/关闭PHP tags。比如,'echo "Hi!";'不能这样传入:'<?php echo "Hi!"; ?>'。但仍然可以用合适的 PHP tag 来离开、重新进入 PHP 模式。比如'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'

除此之外,传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如'echo "Hi!"'会导致一个 parse error,而'echo "Hi!";'则会正常运行。

return语句会立即中止当前字符串的执行。

代码执行的作用域是调用eval()处的作用域。因此,eval()里任何的变量定义、修改,都会在函数结束后被保留。

返回值

eval()返回NULL,除非在执行的代码中return了一个值,函数返回传递给return的值。 PHP 7 开始,执行的代码里如果有一个 parse error,eval()会抛出 ParseError 异常。在 PHP 7 之前, 如果在执行的代码中有 parse error,eval()返回FALSE,之后的代码将正常执行。无法使用set_error_handler()捕获eval()中的解析错误。

淘宝 adsense 商品推荐

google adsense admoi联盟推广 站长变现

价格:10元

范例

Example #1eval()例子 - 简单的文本合并

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>

以上例程会输出:

This is a $string with my $name in it.
This is a cup with my coffee in it.

注释

因为是一个语言构造器而不是一个函数,不能被可变函数调用。
和直接将结果输出到浏览器一样,可使用输出控制函数来捕获当前函数的输出,然后(例如)保存到一个string中。
如果在执行的代码中产生了一个致命的错误(fatal error),整个脚本会退出。

参见

call_user_func()- 把第一个参数作为回调函数调用