解决中文字符串使用str_split()分割为数组乱码问题 | PHP填坑记

  • 2018-11-28
  • 202
  • 0

问题来源:

php中str_split()函数可以将字符串分割为数组

如:

$str='test';  
var_dump(str_split($str));

// 打印结果如下
Array  
(  
    [0] => t
    [1] => e
    [2] => s
    [3] => t
)  

但是, 使用str_split()分割中文字符串的时候, 就会悲剧的乱码了

如:

$str = '测试';
var_dump(str_split($str));

//打印结果如下
Array
(
    0 => string '�'
    1 => string '�'
    2 => string '�'
    3 => string '�'
    4 => string '�'
    5 => string '�'
)

解决方法:

配合正则, 使用preg_splite(), 这样子就能够兼容中文字符串啦, 如:

function mb_str_split($str){  
    return preg_split('/(?<!^)(?!$)/u', $str );  
}  

测试:

$str1 = '测试';
var_dump(mb_str_split($str1));

//打印结果如下
Array
(
    0 => string '测' (length=1)
    1 => string '试' (length=1)
)

//-------------------------------------

$str2 = 'test';
var_dump(mb_str_split($str2));

//打印结果如下
Array  
(  
    [0] => t
    [1] => e
    [2] => s
    [3] => t
)  

OK 这样子我们就完美解决了中文字符串分割数组乱码问题


文章作者: 燕归来
原始链接: https://www.yguilai.com/?p=498
除非特殊说明, 本站所有文章采用 “署名-非商用-相同方式共享 4.0” 协议
转载请注明原文链接及作者


评论

还没有任何评论,你来说两句吧