str_split()是php中按字符拆分字符串为数组的内置函数,支持单字符或指定长度切分,适用于ascii/utf-8英文数字符号,但中文emoji需配合mb函数避免乱码。

str_split() 是 PHP 中专门用于将字符串按字符拆分为数组的内置函数,简单直接,无需正则或循环,适合处理单字节编码(如 ASCII)或 UTF-8 下的英文、数字、符号等场景。注意:它默认按单个字符切分,对中文、emoji 等多字节字符需配合 mb_strlen() 和自定义逻辑,否则会乱码。
基础用法:按1字符拆分
最常用形式是只传入字符串参数,自动以每个字符为单位生成索引数组:
-
str_split("abc")→['a', 'b', 'c'] -
str_split("12345", 2)→['12', '34', '5'](第二个参数指定每段长度) -
str_split("hello", 10)→['hello'](长度超字符串总长时,返回原字符串为唯一元素)
控制分段长度:批量截取更灵活
第二个参数 $length 允许你按固定长度切分,常用于格式化输出、密码分组、十六进制解析等:
- 把 16 位 MD5 字符串每 4 位一组:
str_split("a1b2c3d4e5f67890", 4)→['a1b2', 'c3d4', 'e5f6', '7890'] - 若字符串长度不能被整除,最后一段保留剩余字符,不会补空或丢弃
- 传入 false,务必校验输入
UTF-8 中文字符串慎用!避免乱码
str_split() 基于字节操作,不识别 UTF-8 多字节编码。直接拆分中文会导致字符断裂:
-
str_split("你好")可能返回['ä', '½', '½', 'ä', '½', '¿'](错误乱码) - 正确做法是先用
mb_str_split()(PHP 7.4+):mb_str_split("你好世界", 1, 'UTF-8')→['你', '好', '世', '界'] - 若版本低于 7.4,可用
preg_match_all('/./u', $str, $matches)或循环 +mb_substr()模拟
与 explode() 的关键区别
别把 str_split() 和 explode() 混用:
-
explode()是按**指定分隔符**切割(如逗号、空格),结果取决于内容;str_split()是按**位置和长度**切割,与内容无关 -
explode("", "abc")返回false(空分隔符非法);str_split("abc")总是合法且稳定 - 需要按标点/空格分割时选
explode()或preg_split();需要等长切片或逐字符处理时优先str_split()
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











