PHP UTF8 中文字符截断函数代码
今天需要用一个 UTF-8 的字符串截断函数,网上找了几个代码片段发现都有问题,于是
查了一下原理自己写了一个函数,代码片段如下
代码如下:
<?php
/* UTF-8
中文字符截断程序 */
$str
= "123 这是测试字符串";
$str1
= "()()";
echo
subUTF8str(
$str
,0,3)."<br>";
echo
subUTF8str(
$str
,0,4)."<br>";
echo
subUTF8str(
$str1
,0,4)."<br>";
echo
subUTF8str(
$str1
,0,10)."<br>";
function
subUTF8str(
$str
,
$start
=0,
$length
=80){
$cur_len
= 0;
//
人理解的字符串长度
$all_len
=
strlen
(
$str
);
//
机器理解字符串长度
if
(
$length
>
$all_len
)
{
return
$str
;
}
for
(
$i
= 0;
$i
<
$all_len
;)
{
if
(
$cur_len
==
$start
)
{
break
;
}
if
(ord(
$str
[
$i
]) > 127)
{
$i
+= 3;
}
else
{
$i
+= 1;
}
$cur_len
++;
}
$start_pos
=
$i
;
$temp_pos
=
$cur_len
;
for
(;
$cur_len
-
$temp_pos
<
$length
;)
{
if
(
$i
>=
$all_len
)
break
;