使用php实现截取指定长度 |
本文标签:php,截取,指定长度 PHP语言: 根据中文裁减字符串 复制代码 代码如下: function cutstr($string,$length, $dot = ...) { if (strlen($string) <= $length) { return$string; } $pre = chr(1); $end = chr(1); $string = str_replace(array(&,", <, >),array($pre . &. $end, $pre . " . $end, $pre . < .$end, $pre . > . $end), $string); $strcut = ; 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]; } } $strcut = str_replace(array($pre . & .$end, $pre . " . $end, $pre . < . $end, $pre . > .$end), array(&, ",<, >), $strcut); $pos = strrpos($strcut, chr(1)); if ($pos !== false) { $strcut =substr($strcut, 0, $pos); } return $strcut . $dot; } |