字符串分组有四类方法:一是str_split按固定长度切分;二是preg_split用正则按分隔符(含保留分隔符)切分;三是结合mb_substr按中文/英文等语义边界切分;四是按相同字符连续出现动态分组。

按固定长度分组字符串
最常见需求是把长字符串按每 n 个字符切分成若干子串。PHP 内置函数 str_split() 可直接实现:
-
str_split($str, 3)将字符串每 3 个字符一组,返回数组 - 若未指定长度,默认按单字符拆分;长度为 0 或负数会报错
- 末尾不足长度的部分自动作为最后一组(不补空格)
按指定分隔符分组(非简单 explode)
当需要保留分隔符、或按复杂规则(如“遇到数字就切”)分组时,explode() 不够用。可用 preg_split() 配合正则:
-
preg_split('/(\d+)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE)按数字切,并保留数字本身 - 加 PREG_SPLIT_NO_EMPTY 可跳过空结果
- 适合处理日志、协议报文等含结构化标记的字符串
按语义边界分组(如中文词/英文单词)
纯按字节或正则难处理混合文本。可结合 mb_substr() 和自定义逻辑:
部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/
- 遍历字符串,用
mb_substr($str, $i, 1, 'UTF-8')逐字判断是否为汉字、字母、标点 - 设定规则:连续字母归一组,连续汉字归一组,标点单独成组
- 注意 UTF-8 下 strlen() 不能用于中文计数,必须用 mb_strlen()
按内容特征动态分组(如相同字符连续出现)
类似 RLE(行程编码)的分组,把相邻相同字符合并为一组:
立即学习“PHP免费学习笔记(深入)”;
- 初始化空数组,遍历字符串,比较当前字符与上一个
- 相同时追加到当前组;不同时新建一组
- 示例:
"aaabbbcc"→['aaa','bbb','cc'] - 一行写法可用 preg_match_all('/(.)\1*/', $str, $matches) 直接捕获










