background image

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