php字符串拆分函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function str_split_utf8($str)  
{
$split = 1;
$array = array();
for ($i = 0; $i < strlen($str);) {
$value = ord($str[$i]);
if ($value > 127) {
if ($value >= 192 && $value <= 223) {
$split = 2;
} elseif ($value >= 224 && $value <= 239) {
$split = 3;
} elseif ($value >= 240 && $value <= 247) {
$split = 4;
}
} else {
$split = 1;
}
$key = null;
for ($j = 0; $j < $split; $j++, $i++) {
$key .= $str[$i];
}
array_push($array, $key);
}
return $array;
}
$str = '飞流直下三千尺,疑是银河落九天';
print_r(str_split_utf8($str));

输出结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
[0] => 飞
[1] => 流
[2] => 直
[3] => 下
[4] => 三
[5] => 千
[6] => 尺
[7] => ,
[8] => 疑
[9] => 是
[10] => 银
[11] => 河
[12] => 落
[13] => 九
[14] => 天
)