This article describes the usage of DZX1.5 string truncation function cutstr in php source code analysis. Share it with everyone for your reference. The specific analysis is as follows:
?
2 3 4 5 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
|
<🎜>/**<🎜> <🎜>* The function source is DZX1.5, the file is located at /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 = 'Test database ablci102020@(#)!)!Test workforce ddk'; echo cutstr($string,15); /*End of php*/ |