php 截取字符串

 1     /**
 2      * 方法库-截取字符串-【该函数作者未知】
 3      * @param string  $string 字符串  
 4      * @param int     $length 字符长度
 5      * @param string  $dot    截取后是否添加...
 6      * @param string  $charset编码
 7      * @return string
 8      */
 9     public function cutstr($string, $length, $dot = ‘ ...‘, $charset = ‘utf-8‘) {
10         if (strlen($string) <= $length) {
11             return $string;
12         }
13         $string = str_replace(array(‘&amp;‘, ‘&quot;‘, ‘&lt;‘, ‘&gt;‘), array(‘&‘, ‘"‘, ‘<‘, ‘>‘), $string);
14         $strcut = ‘‘;
15         if (strtolower($charset) == ‘utf-8‘) {
16             $n = $tn = $noc = 0;
17             while ($n < strlen($string)) {
18                 $t = ord($string[$n]);                //ASCII?
19                 if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
20                     $tn = 1; $n++; $noc++;
21                 } elseif (194 <= $t && $t <= 223) {
22                     $tn = 2; $n += 2; $noc += 2;
23                 } elseif (224 <= $t && $t < 239) {
24                     $tn = 3; $n += 3; $noc += 2;
25                 } elseif (240 <= $t && $t <= 247) {
26                     $tn = 4; $n += 4; $noc += 2;
27                 } elseif (248 <= $t && $t <= 251) {
28                     $tn = 5; $n += 5; $noc += 2;
29                 } elseif ($t == 252 || $t == 253) {
30                     $tn = 6; $n += 6; $noc += 2;
31                 } else {
32                     $n++;
33                 }
34                 if($noc >= $length) {
35                     break;
36                 }
37             }
38             if ($noc > $length) {
39                 $n -= $tn;
40             }
41             $strcut = substr($string, 0, $n);
42         } else {
43             for ($i = 0; $i < $length; $i++) {
44                 $strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
45             }
46         }
47         $strcut = str_replace(array(‘&‘, ‘"‘, ‘<‘, ‘>‘), array(‘&amp;‘, ‘&quot;‘, ‘&lt;‘, ‘&gt;‘), $strcut);
48         return $strcut.$dot;
49     }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。