php正则表达式核心函数包括:一、preg_match单次匹配校验;二、preg_match_all提取全部匹配项;三、preg_replace支持反向引用的替换;四、preg_split按动态模式分隔字符串;五、修饰符(i/m/s等)控制匹配行为。

如果您需要在PHP中提取、验证或替换特定格式的文本,则正则表达式是核心工具。PHP提供了多组函数支持PCRE(perl Compatible Regular Expressions)标准,以下是具体应用方式:
一、使用preg_match进行单次匹配
该函数用于检测字符串中是否存在符合正则模式的子串,返回布尔值,适合做格式校验或简单提取。
1、定义目标字符串,例如 $text = “订单号:ORD-2023-00456”;
2、编写正则模式,如 $pattern = ‘/ORD-d{4}-d{5}/’;
立即学习“PHP免费学习笔记(深入)”;
3、调用 preg_match($pattern, $text, $matches);
4、若匹配成功,$matches[0] 将包含首次匹配到的完整字符串,即 “ORD-2023-00456″。
二、使用preg_match_all提取全部匹配项
当目标字符串中存在多个符合模式的片段时,此函数可一次性捕获所有结果,并按组结构存入数组。
1、设定文本 $content = “邮箱:a@example.com;联系人:b@test.org;备用:c@demo.cn”;
2、构造邮箱匹配模式 $email_pattern = ‘/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}/’;
3、执行 preg_match_all($email_pattern, $content, $all_emails);
4、$all_emails[0] 是包含全部匹配邮箱地址的索引数组,顺序与原文出现位置一致。
三、使用preg_replace执行文本替换
该函数依据正则规则定位内容并替换成指定字符串,支持反向引用,适用于模板填充或敏感词过滤。
1、准备原始字符串 $str = “价格:¥199.99,库存:15件”;
2、定义带捕获组的模式 $price_pattern = ‘/价格:¥(d+.d+)/’;
3、调用 preg_replace($price_pattern, ‘标价:$1‘, $str);
4、结果为 “标价:199.99,库存:15件”,其中$1 表示第一个捕获组的内容。
四、使用preg_split按正则分隔字符串
不同于简单的 explode(),该函数允许以动态模式(如多个空白符、混合分隔符)切割字符串,返回子串数组。
1、给定字符串 $line = “apple, banana ; cherrytdate”;
2、编写宽松分隔模式 $sep_pattern = ‘/[s,;]+/’;
3、执行 $parts = preg_split($sep_pattern, $line, -1, PREG_SPLIT_NO_EMPTY);
4、生成的数组将排除空元素,且自动跳过多余空白与混合标点,得到 [“apple”,”banana”,”cherry”,”date”]。
五、启用修饰符控制匹配行为
在正则模式末尾添加修饰符可改变默认匹配逻辑,常见组合直接影响功能表现。
1、在模式后追加 i 修饰符实现不区分大小写,如 ‘/HELLO/i’ 可匹配 “hello” 或 “Hello”
2、添加 m 修饰符使 ^ 和 $ 匹配每行起止而非整个字符串首尾
3、使用 s 修饰符令 . 可匹配换行符,避免跨行内容被截断
4、组合使用时顺序不限,但必须紧贴右斜杠之后,如 ‘/pattern/im’