大柚子

这世界不过如此

代码注入函数

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
 是一个数组,preg_replace() 返回一个数组,其他情况下返回一个字符串。

如果匹配被查找到,替换后的 

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

将字符串解析成多个变量

Print Friendly, PDF & Email

发表回复

您的电子邮箱地址不会被公开。