登录
首页 >  文章 >  php教程

PHP字符串按长度分割技巧分享

时间:2026-03-19 16:02:51 344浏览 收藏

本文深入讲解了PHP中按固定长度分割字符串的多种实用方法,重点对比了str_split()在处理英文与中文时的差异——它虽简洁高效,却因按字节分割而容易导致UTF-8中文乱码;为此,文章推荐了更可靠的替代方案:PHP 7.4+用户可直接使用支持多字节字符的mb_str_split(),而旧版本则可通过preg_split()配合Unicode正则安全实现等长中文切分,附带清晰示例和注意事项,助你避开编码陷阱,写出健壮、兼容性强的字符串处理代码。

PHP字符串按长度分割怎么做_PHP定长分割字符串为数组的技巧

在PHP中,如果想把一个字符串按固定长度分割成数组,可以使用系统自带的函数 str_split()。这个函数能将字符串切割为指定长度的子串,并返回一个数组。

使用 str_split() 进行定长分割

str_split() 函数的基本语法如下:

str_split($string, $length)

  • $string:要分割的原始字符串
  • $length:每个片段的字符长度,默认为1

例如,将字符串每4个字符分割一次:

$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('/(?

这里的正则 /(? 表示从上一次匹配结束位置开始,每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字符串按长度分割技巧分享》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于PHP字符串处理的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>