使用str_split()可将字符串按长度分割为数组,但处理中文时需用mb_str_split()或preg_split()避免乱码。

在PHP中,如果想把一个字符串按固定长度分割成数组,可以使用系统自带的函数 str_split()。这个函数能将字符串切割为指定长度的子串,并返回一个数组。
使用 str_split() 进行定长分割
str_split() 函数的基本语法如下:
str_split($string, $length)
$string:要分割的原始字符串 $length:每个片段的字符长度,默认为1
例如,将字符串每4个字符分割一次:
立即学习“PHP免费学习笔记(深入)”;
$str = "abcdefghij";$chunks = str_split($str, 4);print_r($chunks);// 输出:// Array// (// [0] => abcd// [1] => efgh// [2] => ij// )
处理中文字符串时的注意事项
str_split() 是按字节分割的,对英文没问题,但遇到UTF-8编码的中文字符时会出现乱码或截断问题,因为一个中文字符占3个字节。
解决办法是使用 mb_str_split()(PHP 7.4+ 支持):
$str = "你好世界abcdef";$chunks = mb_str_split($str, 4, 'UTF-8');print_r($chunks);// 按4个字符一组(支持中文),输出:// Array// (// [0] => 你好世// [1] => 界abc// [2] => def// )
如果PHP版本低于7.4,可以用 preg_split() 配合正则实现类似效果:
$chunks = preg_split('/(?<=G.{4})/u', $str, -1, PREG_SPLIT_NO_EMPTY);
这里的正则 /(? 表示从上一次匹配结束位置开始,每4个Unicode字符切一次。
自定义函数实现更灵活控制
如果你需要兼容低版本PHP并处理多字节字符,可以封装一个通用函数:
function mb_str_split_custom($str, $length = 1, $encoding = 'UTF-8') { $len = mb_strlen($str, $encoding); $chunks = []; for ($i = 0; $i < $len; $i += $length) { $chunks[] = mb_substr($str, $i, $length, $encoding); } return $chunks;}// 使用示例$str = "一二三四五六七八";$result = mb_str_split_custom($str, 3);print_r($result);// 输出每3个中文字符一组
基本上就这些。根据你的PHP版本和是否包含中文,选择合适的方法即可。str_split() 最简单,处理中文推荐用 mb_ 相关函数或正则方式。不复杂但容易忽略编码问题。
以上就是PHP字符串按长度分割怎么做_PHP定长分割字符串为数组的技巧的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1322821.html
微信扫一扫
支付宝扫一扫