本文实例讲述了php源码分析之DZX1.5字符串截断函数cutstr用法。分享给大家供大家参考。具体分析如下:
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
|
<?php
/**
* 函数来源DZX1.5,文件所在 /source/function/function_core.php
*/
define( 'CHARSET' , 'UTF-8' );
function cutstr( $string , $length , $dot = "..." ) {
if ( strlen ( $string )<= $length ) {
return $string ;
}
if ( strtolower (CHARSET) == "utf-8" ) {
$n = $tn = $noc = 0;
while ( $n < strlen ( $string )) {
$t = ord( $string [ $n ]);
if ( $t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n ++; $noc ++;
} elseif (194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif (224 <= $t && $t <= 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif (240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif (248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif ( $t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n ++;
}
if ( $noc >= $length ) {
break ;
}
}
if ( $noc > $length ) {
$n -= $tn ;
}
$strcut = substr ( $string , 0, $n );
} else {
for ( $i = 0; $i < $length ; $i ++) {
$strcut .= ord( $string [ $i ])>127 ? $string [ $i ]. $string [++ $i ] : $string [ $i ];
}
}
$pos = strrpos ( $strcut , chr (1));
if ( $pos !== false) {
$strcut = substr ( $strcut ,0, $pos );
}
return $strcut . $dot ;
}
$string = '测试数据库ablci102020@(#)!)!测试劳动力ddk' ;
echo cutstr( $string ,15);
/*End of php*/
|
运行结果如下:
测试数据库ablci1020...
希望本文所述对大家的php程序设计有所帮助。