奋斗我的青春

php如何将中文字符串分割成数组

发布时间:3个月前热度: 76 ℃评论数:

我们都知道字符串可以使用str_split分割成数组

$str = 'abcdefg';  
$tem = str_plite($str);  
var_dump($tem);

//输出以下内容
Array  
(  
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
)  

但当遇到中文的时候就出问题了,中文使用str_split分割过后全都变成了乱码,怎么解决呢?

答案是使用正则表达式解决:

/**
 * 分割中文字符串为数组
 * @param String $string
 * return Array
 */
function mb_str_split($string) {

return preg_split('/(?<!^)(?!$)/u', $string );

} $string = '奋斗'; $charlist = mb_str_split($string); var_dump($charlist); //打印结果如下 Array ( [0] => 奋 [1] => 斗 )


正则表达式/(?<!^)(?!$)/u可以匹配多字节字符,

(?<!^)和(?!$)都是零宽断言,前者表示此位置之前不匹配^,后者表示此位置之后不匹配$。

在正则中^和$单独用表示开头和末尾。

也就是说(?<!^)表示此位置之前不匹配开头,(?!$)表示此位置之后不匹配末尾。

所以这个split匹配到的部分,为每两个字的中间位置(但是没有匹配到任何实际的字符)。

php,中文,分割

栏目导航

  1. PHP
  2. WEB前端

手机扫码访问