本文实例讲述了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程序设计有所帮助。