Share a function that intercepts a string of specified length. You can specify the length of the string to be intercepted, and you can set the display content of the excess part. It is very good and worth learning from.
Cut the string according to Chinese and intercept the string content of the specified length. The code is as follows: <?php /** * 截取指定长度的字符串 * func: cutstr $string字符串,$length长度,$dot超出部分 * edit: bbs.it-home.org */ 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; } ?> Copy after login |