本文最后更新于 2025年1月20日 凌晨
关于 PHP 的一小部分知识
魔术常量 如 __FILE__
这样的预定义常量,被称为魔术常量。
1 2 3 4 5 6 7 8 9 __FILE__ highlight_file (__FILE__ ); __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __METHOD__ __NAMESPACE__
函数 文件操作函数 1 2 3 4 5 6 7 include (): 包含并运行指定文件,包含文件发生错误,程序警告,但会继续执行include_once (): 检查这个文件是否已经被导入,如果已导入,下文便不会再导入,直面 once 理解就是只导入一次require (): 包含并运行指定的文件,包含文件发生错误时,程序直接终止执行require_once (): 和 require 类似,不同处在于 require_once 只导入一次fopen (): 打开一个文件或 URLfile_get_contents (): 读取文件的全部内容到一个字符串,例如 $content = file_get_contents ("test.txt" );file_put_contents (): 将一个字符串写入文件。例如:file_put_contents ("test.txt" , "Hello butt3rf1y!" );
代码执行函数 1 2 eval (): 将字符串当中php代码来执行,比如: 一句话木马@eval (_POST["1" ]);assert (): 检测执行条件是否为 true
调用系统底层的4个方法-system , shell_exec , exec , passthru
1 2 3 4 5 system (): 调用系统底层,执行系统命令,例如 system ("ls /" ); 列出当前目录下所有文件shell_exc (): 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回exec ():执行一个外部程序passthru ():执行外部程序并且显示原始输出,当所执行的 Unix 命令输出二进制数据, 并且需要直接传送到浏览器的时候, 需要用此函数来替代 exec () 或 system () 函数
反序列化函数 1 unserialize (): 将一个已序列化的字符串转换回 PHP 的值。例如:$array = unserialize ($serializedStr ); 可以将一个序列化的数组字符串转换为数组。
数据库操作函数 1 mysql_query (), mysqli_query (): 发送一个 MySQL 查询。例如:$result = mysql_query ("SELECT * FROM users" );
正则表达式函数 preg_match():
用于进行正则表达式匹配,成功返回 1,否则返回 0。
注: preg_match()
第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到检索对象的结尾处,则需使用 preg_match_all()
函数。
1 2 3 4 5 6 7 8 9 10 11 <?php if (preg_match ("/php/i" , "PHP is the web scripting language of choice." , $matches )) { print "A match was found:" . $matches [0 ]; } else { print "A match was not found." ; } ?>
preg_match_all():
用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
1 2 3 4 5 6 7 8 9 10 11 12 <?php $str = "<pre>学习php是一件快乐的事。</pre><pre>所有的 phper 需要共同努力!</pre>" ; $kw = "php" ; preg_match_all ('/<pre>([sS]*?)</pre>/' ,$str ,$mat ); for ($i =0 ;$i <count ($mat [0 ]);$i ++) { $mat [0 ][$i ] = $mat [1 ][$i ]; $mat [0 ][$i ] = str_replace ($kw , '<span style="color:#ff0000">' .$kw .'</span>' , $mat [0 ][$i ]); $str = str_replace ($mat [1 ][$i ], $mat [0 ][$i ], $str ); } echo $str ; ?>
preg_match_all()
用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
preg_replace()
执行正则表达式搜索和替换
1 2 3 4 5 6 7 8 <?php $str = "butt3rf1y" ; $pattern = '/\d+/' ; $replacement = 'R' ; $result = preg_replace ($pattern , $replacement , $str ); echo $result ; ?>
preg_split()
将字符串依指定的规则切开。
表单数据 $_GET
接受 GET 请求传递的参数
1 example.com/index.php?bu =butt3rf1y,你可以使用 $_GET ['bu' ] 来获取相应的值
$_POST
接受 POST 传参
1 example.com/index.php 进行 POST 传参,参数名为 bu 内容为 but3rf1y,可以使用 $_POST ['bu' ] 来获取相应的值。
$_REQUEST
接受 GET 和 POST 以及 Cookie 请求传递的参数
1 2 3 通过 GET 请求 URL 传递了一个参数 example.com/index.php?key =value_from_get,可以通过 $_REQUEST ['key' ] 获取这个值。 通过 POST 方法提交了一个表单,其中有一个名为 key 的字段且其值为 value_from_post,可以通过 $_REQUEST ['key' ] 获取这个值。 设置了一个名为 key 的 cookie,其值为 value_from_cookie,可以使用 $_REQUEST ['key' ] 来获取这个值。
有点小累……