eval 把字符串作为PHP代码执行
发表日期:2021-07-01 10:15:42 | 来源: | | 浏览(1077) 分类:杂项 函数
eval
(PHP 4, PHP 5, PHP 7, PHP 8)
eval — 把字符串作为PHP代码执行
说明
$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() 中的解析错误。
范例
示例 #1 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.
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- connection_aborted 检查客户端是否已经断开(0)
- connection_status 返回连接的状态位(0)
- constant 返回一个常量的值(0)
- define 定义一个常量(0)
- defined 检查某个名称的常量是否存在(0)
- die 等同于 exit()(0)
- eval 把字符串作为PHP代码执行(0)
- exit 输出一个消息并且退出当前脚本(0)
- get_browser 获取浏览器具有的功能(0)
- __halt_compiler 中断编译器的执行(0)
- highlight_file 语法高亮一个文件(0)
- highlight_string 字符串的语法高亮(0)
- hrtime 获取系统的高精度时间(0)
- ignore_user_abort 设置客户端断开连接时是否中断脚本的执行(0)
- pack 将数据打包成二进制字符串(0)
- php_strip_whitespace 返回删除注释和空格后的PHP源码(0)
- sapi_windows_cp_conv Convert string from one codepage to another(0)
- sapi_windows_cp_get Get current codepage(0)
- sapi_windows_cp_is_utf8 Indicates whether the codepage is UTF-8 compatible(0)
- sapi_windows_cp_set Set process codepage(0)
- sapi_windows_generate_ctrl_event Send a CTRL event to another process(0)
- sapi_windows_set_ctrl_handler Set or remove a CTRL event handler(0)
- sapi_windows_vt100_support Get or set VT100 support for the specified stream associated to an output buffer of a Windows console.(0)
- show_source 别名 highlight_file()(0)
- sleep 延缓执行(0)
- sys_getloadavg 获取系统的负载(load average)(0)
- time_nanosleep 延缓执行若干秒和纳秒(0)
- time_sleep_until 使脚本睡眠到指定的时间为止。(0)
- uniqid 生成一个唯一ID(0)
- unpack Unpack data from binary string(0)
- usleep 以指定的微秒数延迟执行(0)
- 字符串 函数(101)