代码注入函数
eval
(PHP 4, PHP 5, PHP 7, PHP 8)
eval — 把字符串作为PHP代码执行
- 说明
eval(string $code): mixed
把字符串code作为PHP代码执行
- 参数
需要被执行的字符串
代码不能包含打开/关闭 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() 中的解析错误。
assert
(PHP 4, PHP 5, PHP 7, PHP 8)
assert — 检查一个断言是否为
false
- 说明
PHP 5
assert(mixed $assertion, string $description = ?): bool
PHP 7
assert(mixed $assertion, Throwable $exception = ?): bool
assert() 会检查指定的 assertion 并在结果为 false 时采取适当的行动。
preg_replace
(PHP 4, PHP 5, PHP 7, PHP 8)
preg_replace — 执行一个正则表达式的搜索和替换
- 说明
preg_replace(
string|array $pattern,
string|array $replacement,
string|array $subject,
int $limit = -1,
int &$count = null
): string|array|null
搜索 subject 中匹配 pattern 的部分,以 replacement 进行替换
- 参数
pattern 要搜索的模式。可以使一个字符串或字符串数组。 可以使用一些 PCRE 修饰符。 replacement 用于替换的字符串或字符串数组。如果这个参数是一个字符串,并且 pattern 是一个数组,那么所有的模式都使用这个字符串进行替换。如果 pattern 和 replacement 都是数组,每个 pattern 使用 replacement 中对应的元素进行替换。如果 replacement 中的元素比 pattern 中的少,多出来的 pattern 使用空字符串进行替换。 replacement 中可以包含后向引用 \\n 或 $n,语法上首选后者。 每个这样的引用将被匹配到的第 n 个捕获子组捕获到的文本替换。 n 可以是0-99,\\0 和 $0 代表完整的模式匹配文本。捕获子组的序号计数方式为:代表捕获子组的左括号从左到右, 从1开始数。如果要在 replacement 中使用反斜线,必须使用 4 个("\\\\",译注:因为这首先是 PHP 的字符串,经过转义后,是两个,再经过正则表达式引擎后才被认为是一个原文反斜线)。 当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字 (比如:在一个匹配模式后紧接着增加一个原文数字),不能使用 \\1 这样的语法来描述后向引用。比如,\\11将会使preg_replace() 不能理解你希望的是一个 \\1 后向引用紧跟一个原文 1,还是一个 \\11 后向引用后面不跟任何东西。 这种情况下解决方案是使用 ${1}1。这创建了一个独立的 $1 后向引用, 一个独立的原文 1。 当使用被弃用的 e 修饰符时, 这个函数会转义一些字符 (即:'、"、 \ 和 NULL) 然后进行后向引用替换。当这些完成后请确保后向引用解析完后没有单引号或双引号引起的语法错误 (比如: 'strlen(\'$1\')+strlen("$2")')。确保符合 PHP 的 字符串语法,并且符合 eval 语法。因为在完成替换后,引擎会将结果字符串作为 PHP 代码使用 eval 方式进行评估并将返回值作为最终参与替换的字符串。 subject 要进行搜索和替换的字符串或字符串数组。 如果 subject 是一个数组,搜索和替换回在 subject 的每一个元素上进行, 并且返回值也会是一个数组。 limit 每个模式在每个 subject 上进行替换的最大次数。默认是 -1(无限)。 count 如果指定,将会被填充为完成的替换次数。
- 返回值
如果
subject
如果匹配被查找到,替换后的
subject
subject
null
命令执行函数
escapeshellarg
把字符串转码为可以在shell命令里使用的参数
escapeshellcmd
shell元字符转义
exec
执行一个外部程序
passthru
执行外部程序并且现实原始输出
proc_close
关闭由proc_open打开的进程并且返回进程
proc_get_status
获取由proc_open函数打开的进程信息
proc_nice
修改当前进程的优先级
proc_open
执行一个命令,并且打开用来输入/输出的文件指针
proc_terminate
删除由proc_open打开的进程
shell_exec
通过shell环境执行命令,并且将完整的输出以字符串的方式返回
system
执行外部程序,并且显示输出
文件包含函数
require
include
require_once
include_once
文件操作函数
copy
拷贝文件
delete
删除文件
fflush
将缓冲内容输出到文件
file_get_contents
将整个文件读入一个字符串
file_put_contents
将一个字符串写入文件
fputcsv
将行格式化为CSV并写入文件指针
fputs
fwirte别名
fread
读取文件(可安全用于二进制文件)
fscanf
从文件中格式化输入
fwrite
写入文件(可安全用于二级制文件)
move_uploaded_file
将上传的文件移动到新位置
readfile
输出文件
rename
重命名一个文件或目录
rmdir
删除目录
unlink
删除文件
变量覆盖
extract
从数组中将变量导入到当前的符号表
parse_str
将字符串解析成多个变量