标签:
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(‘&‘, ‘"‘, ‘<‘, ‘>‘), 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(‘&‘, ‘"‘, ‘<‘, ‘>‘), $strcut); 48 return $strcut.$dot; 49 }
标签:
原文地址:http://www.cnblogs.com/jackoogle/p/4265946.html