PHP执行函数(命令执行和代码执行)
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代码执行