Home >Backend Development >PHP Problem >Convert php string to executable code
php字符串转成可执行代码
在php中将字符串转为可执行的代码,可以通过使用php中的“eval()”函数来实现。
eval说明与用法
eval — 把字符串作为PHP代码执行
eval ( string $code ) : mixed
注:函数eval()语言结构是 非常危险的, 因为它允许执行任意 PHP 代码。 它这样用是很危险的。 如果您仔细的确认过,除了使用此结构以外 别无方法, 请多加注意,不要允许传入任何由用户 提供的、未经完整验证过的数据 。
eval参数
code:
需要被执行的字符串
代码不能包含打开/关闭 PHP tags。比如, 'echo "Hi!";' 不能这样传入: 'c93bc621fc315c9eea37a1bffb17103f'。但仍然可以用合适的 PHP tag 来离开、重新进入 PHP 模式。比如 'echo "In PHP mode!"; ?>In HTML mode!
除此之外,传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如 'echo "Hi!"' 会导致一个 parse error,而 'echo "Hi!";' 则会正常运行。
return 语句会立即中止当前字符串的执行。
代码执行的作用域是调用 eval() 处的作用域。因此,eval() 里任何的变量定义、修改,都会在函数结束后被保留。
eval返回值
eval() 返回 NULL,除非在执行的代码中 return 了一个值,函数返回传递给 return 的值。 PHP 7 开始,执行的代码里如果有一个 parse error,eval() 会抛出 ParseError 异常。在 PHP 7 之前, 如果在执行的代码中有 parse error,eval() 返回 FALSE,之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。
eval使用示例
<?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.
The above is the detailed content of Convert php string to executable code. For more information, please follow other related articles on the PHP Chinese website!