应根据字符串结构和分割逻辑选择函数:explode()适用于固定分隔符,preg_split()处理混合分隔符并支持正则,str_split()按长度切分但需注意多字节字符问题。

explode() 是最常用也最直接的选择,但具体用哪个函数,取决于你的字符串结构和分割逻辑。
用 explode() 处理固定分隔符(如 CSV、竖线列表)
当字符串里有明确、单一的分隔符(比如 ,、|、 ),explode() 效率高、语法干净,且 PHP 所有版本都支持。
- 分隔符是字符串,不是正则,所以不能写
/\s+/这类模式 - 连续分隔符会产生空元素:例如
explode(",", "a,,b")得到["a", "", "b"] - 开头或结尾有分隔符也会生成空字符串,需手动过滤:
array_filter($arr, 'strlen')或配合array_values()重排键名 -
limit参数很有用:比如只取前两段explode(":", "user:pass:extra", 2)→["user", "pass:extra"]
用 preg_split() 处理混合/模糊分隔符(如空格+逗号+分号)
当你面对的不是“一个分隔符”,而是“多种可能分隔方式”,或者需要跳过空白、合并连续分隔符时,preg_split() 是唯一靠谱的方案。
- 必须用正则表达式,比如匹配空格、逗号、分号任意一种或多个:
preg_split('/[\s,;]+/', $str) - 加
PREG_SPLIT_NO_EMPTY标志可省去后续array_filter():preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY) - 处理 UTF-8 中文时记得加
u修饰符:preg_split('/\s+/u', $str),否则可能乱切字节 - 性能比
explode()略低,简单场景没必要上正则
用 str_split() 按长度切分(如十六进制、密码块、逐字符)
它根本不看分隔符,只按字节数硬拆。适合无结构但等长的原始数据,比如把 "aabbcc" 每两位一组。
- 对中文等多字节字符不安全:默认按字节操作,
str_split("你好")会返回乱码数组 - 要处理中文,改用
mb_str_split()(PHP 7.4+)或preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY) - 第二个参数为
1时等价于逐字符拆,但不如mb_str_split($str, 1)可靠 - 若指定长度大于字符串总长,整个字符串作为唯一元素返回
explode() 遇到 "a, ,c" 会保留中间那个空格字符串,preg_split() 不加 PREG_SPLIT_NO_EMPTY 也会留空项,而 str_split() 在中文环境里默认就错——这些都不是函数“不好用”,而是没对齐输入特征。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











