PHP eval 杂项函数

  • 定义和用法

    eval - 把字符串作为PHP代码执行
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    eval( string $code )
    eval() 把字符串 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()函数结束后被保留。
  • 返回值

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

    $code = '$a = 5; echo $a;';
    eval($code);
  • 相关页面

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