PHP执行函数(命令执行和代码执行)

Author Avatar
白菀枯
发表:2024-07-17 21:27:42
修改:2024-07-18 22:40:20

1. 命令执行(调用系统命令)

1. exec("系统命令",[$保存结果],[$保存运行状态码])

运行完成后不会有回显,如exec('echo 123'); 也不会输出123;

会将运行结果直接保存在$保存结果 中;

成功执行,则$保存运行状态码为0;失败为1

  • exec直接返回的是命令结果的最后一行

2. $xxx = shell_exec("系统命令")

同样运行完成后不会有直接的回显,将结果保存在$xxx中

3. system("系统命令",[$保存运行状态码])

会直接把运行的结果输出

成功执行,则$保存运行状态码为0;失败为1

  • 同exec,直接返回的是命令结果的最后一行

4. passthru("系统命令",[$保存运行状态码])

  • 基本同system,但不返回任何值

5. $xxx=`系统命令`

  • ``是反撇号,即键盘上的~,并非单引号''

  • 同shell_exec("系统命令")

6. $xxx=popen("系统命令", 'r或w') 和 proc_open()

返回一个运行结果的文件指针$xxx,可用fgets($xxx) 读取一行内容

r是可读/w是可写

最后可用pclose($xxx) / proc_close($xxx)关闭

2. 代码执行函数(执行代码)

1. eval("代码、系统命令");

执行字符串内容

2. assert("代码、系统命令")

执行字符串内容

不需要以分号结尾,有时加上分号不会显示结果。

3. call_user_func('其他方法名',['这个方法的参数1','这个方法的参数2',...])

如果是类里的静态方法:

call_user_func(array("类名", "方法名"),"参数1");

4. $xxx = create_function('[参数]',"执行命令 return 123");

创建一个匿名函数,第一个位置填入函数所需参数,第二个位置执行相应命令。

结果会以字符串返回而非直接输出。如

<?php
// 创建一个匿名函数,它接受两个参数并返回它们的和
$sum = create_function('$a, $b', 'return $a + $b;');

// 调用匿名函数并打印结果
echo $sum(1, 2); // 输出: 3
?>

5. array_map("方法名",$数组名1,[$数组名2、3...])

对数组中的每个数都执行方法名操作。

如,对a数组中的每个数的平方:

<?php
function myfunction($num)
{
   return($num*$num);
}
 
$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));
?>

6. call_user_func_array("方法名",$数组名)

将数组中的每个元素依次作为方法名的参数

7. array_filter($数组名,["方法名", 参数])

过滤数组中的每个元素,只有满足方法名会返回到新数组中,没有方法则过滤一切为true的元素。得到的新数组对应关系不变。

8. uasort($数组名,"方法名")

数组按方法名进行排序

9. mixed preg_replace ("正则\e" , "替换后", "搜索")

原作用是按正则搜索替换为替换后,正则加了\e之后,”替换后“的部分将会当作php代码执行

评论