PHP 基础(部分)

本文最后更新于 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(): 打开一个文件或 URL
file_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.";
}
?>
//A match was found: PHP

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;
?>
//将所有 <pre></pre> 标签内的关键字显示为红色

preg_match_all()

用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

preg_replace()

执行正则表达式搜索和替换

1
2
3
4
5
6
7
8
<?php
$str = "butt3rf1y";
$pattern = '/\d+/'; // \d+是匹配一个或多个数字
$replacement = 'R';
$result = preg_replace($pattern, $replacement, $str);
echo $result;
?>
// buttRrfRy

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'] 来获取这个值。

有点小累……


PHP 基础(部分)
http://example.com/2024/11/08/PHP基础-部分/
作者
butt3rf1y
发布于
2024年11月8日
许可协议