php" id="highlighter_574569">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
< ?php
//截取中文字符串
function mysubstr( $str , $start , $len ) {
$tmpstr = "" ;
$strlen = $start + $len ;
for ( $i = 0; $i < $strlen ; $i ++) {
if (ord( substr ( $str , $i , 1)) > 0xa0) {
$tmpstr .= substr ( $str , $i , 2);
$i ++;
} else
$tmpstr .= substr ( $str , $i , 1);
}
return $tmpstr ;
}
?>
|
2. 截取utf8编码的多字节字符串
1
2
3
4
5
6
7
8
9
10
|
<?php
< ?php
//截取utf8字符串
function utf8Substr( $str , $from , $len )
{
return preg_replace( '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' .
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s' ,
'$1' , $str );
}
?>
|
3. UTF-8、GB2312都支持的汉字截取函数
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<?php
< ?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
function cut_str( $string , $sublen , $start = 0, $code = 'UTF-8' )
{
if ( $code == 'UTF-8' )
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/" ;
preg_match_all( $pa , $string , $t_string );
if ( count ( $t_string [0]) - $start > $sublen ) return join( '' , array_slice ( $t_string [0], $start , $sublen )). "..." ;
return join( '' , array_slice ( $t_string [0], $start , $sublen ));
}
else
{
$start = $start *2;
$sublen = $sublen *2;
$strlen = strlen ( $string );
$tmpstr = '' ;
for ( $i =0; $i < $strlen ; $i ++)
{
if ( $i >= $start && $i < ( $start + $sublen ))
{
if (ord( substr ( $string , $i , 1))>129)
{
$tmpstr .= substr ( $string , $i , 2);
}
else
{
$tmpstr .= substr ( $string , $i , 1);
}
}
if (ord( substr ( $string , $i , 1))>129) $i ++;
}
if ( strlen ( $tmpstr )< $strlen ) $tmpstr .= "..." ;
return $tmpstr ;
}
}
$str = "abcd需要截取的字符串" ;
echo cut_str( $str , 8, 0, 'gb2312' );
?>
|
4. BugFree 的字符截取函数
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
< ?php
/**
* @package BugFree
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
*
*
* Return part of a string(Enhance the function substr())
*
* @author Chunsheng Wang <wwccss@263.net>
* @param string $String the string to cut.
* @param int $Length the length of returned string.
* @param booble $Append whether append "...": false|true
* @return string the cutted string.
*/
function sysSubStr( $String , $Length , $Append = false)
{
if ( strlen ( $String ) < = $Length )
{
return $String ;
}
else
{
$I = 0;
while ( $I < $Length )
{
$StringTMP = substr ( $String , $I ,1);
if ( ord( $StringTMP ) >=224 )
{
$StringTMP = substr ( $String , $I ,3);
$I = $I + 3;
}
elseif ( ord( $StringTMP ) >=192 )
{
$StringTMP = substr ( $String , $I ,2);
$I = $I + 2;
}
else
{
$I = $I + 1;
}
$StringLast [] = $StringTMP ;
}
$StringLast = implode( "" , $StringLast );
if ( $Append )
{
$StringLast .= "..." ;
}
return $StringLast ;
}
}
$String = "17test.info 走在中国自动化测试的前沿" ;
$Length = "18" ;
$Append = false;
echo sysSubStr( $String , $Length , $Append );
?>
|
以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注服务器之家的最新内容。