php 截取utf-8格式的字符串
php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。本文章向大家介绍一个php 截取utf-8格式字符串的函数。
举例说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function truncate_utf8_string( $string , $length , $etc = '...' ) {
$result = '' ;
$string = html_entity_decode ( trim ( strip_tags ( $string ) ), ENT_QUOTES, 'UTF-8' );
$strlen = strlen ( $string );
for ( $i = 0; (( $i < $strlen ) && ( $length > 0)); $i ++) {
if ( $number = strpos ( str_pad ( decbin ( ord ( substr ( $string , $i , 1 ) ) ), 8, '0' , STR_PAD_LEFT ), '0' )) {
if ( $length < 1.0) {
break ;
}
$result .= substr ( $string , $i , $number );
$length -= 1.0;
$i += $number - 1;
} else {
$result .= substr ( $string , $i , 1 );
$length -= 0.5;
}
}
$result = htmlspecialchars ( $result , ENT_QUOTES, 'UTF-8' );
if ( $i < $strlen ) {
$result .= $etc ;
}
return $result ;
}
|
如果需要截取utf-8格式的字符串,直接调用这个函数即可。
1
2
3
4
|
<?php
$str = "如果需要截取utf-8格式的字符串,直接调用这个函数即可。" ;
echo truncate_utf8_string( $str ,10); //输出结果:如果需要截取utf-8格...
?>
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!