preg_split函数提供五种正则分割方法:一、基础字符类匹配;二、过滤空项并忽略空白;三、用捕获组保留分隔符;四、限制分割次数以保留尾部;五、加u修饰符实现unicode安全分割。

如果您需要将一个字符串按照特定的模式进行分割,PHP 提供了 preg_split 函数来实现基于正则表达式的灵活切分。以下是几种常用且有效的使用方法:
一、基础用法:按简单正则模式分割
该方法适用于以固定字符或常见模式(如空格、标点)为分隔符的场景,正则表达式简洁明确,不启用额外标志。
1、定义待分割的字符串,例如 $str = "apple,banana;cherry|date";
2、调用 preg_split('/[,;|]/', $str),使用字符类匹配逗号、分号或竖线;
立即学习“PHP免费学习笔记(深入)”;
3、函数返回一个索引数组,元素为各分割段,空字符串默认保留在结果中。
二、过滤空元素并忽略空白符
当原始字符串中存在连续分隔符或首尾空白时,会产生空项或多余空格,可通过标志位与正则组合清除。
1、构造正则表达式 '/\s*[,;|]\s*/',匹配分隔符及其前后任意空白;
2、传入 PREG_SPLIT_NO_EMPTY 标志,自动丢弃结果中的空字符串;
3、执行 preg_split('/\s*[,;|]\s*/', $str, -1, PREG_SPLIT_NO_EMPTY)。
三、保留分隔符本身到结果中
在某些解析需求中,需同时获取子串和对应的分隔符,此时利用捕获组可使分隔符成为返回数组的一部分。
1、将分隔符放入圆括号形成捕获组,例如 '/([,;|])/';
2、添加 PREG_SPLIT_DELIM_CAPTURE 标志;
3、调用 preg_split('/([,;|])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE),结果数组交替出现内容与分隔符。
四、限制分割次数并获取剩余部分
当只需前几段而将余下内容整体保留为最后一项时,可设定最大分割数,避免过度切分。
1、确定期望的最大子串数量,例如最多取 3 段,则设置 $limit = 3;
2、使用 preg_split('/\s+/', $str, $limit),正则匹配一个或多个空白;
3、若实际匹配超过 $limit - 1 次,最后元素为剩余未分割的完整尾部字符串。
五、区分大小写与 Unicode 安全分割
处理含中文、emoji 或多语言文本时,需确保正则引擎正确识别 UTF-8 字符,避免截断字节序列。
1、在正则开头添加 'u' 修饰符,例如 '/[,。!?;:]+/u';
2、确认 PHP 运行环境已启用 mbstring 扩展且内部编码为 UTF-8;
3、调用 preg_split('/[,。!?;:]+/u', $str, -1, PREG_SPLIT_NO_EMPTY)。











