PHP code to cut string functions according to Chinese
Last Update:2017-02-28
Source: Internet
Author: User
There are a lot of cut string functions, but according to Chinese cut string is very little, in this article will introduce you how to use PHP to achieve, interested friends do not miss the code as follows: Define (CHARSET, ' UTF-8 '); System default encoding /** * According to Chinese cut string * @param $string-string * @param $length-length * @param $doc -Suffix * @return returns the string with the ellipsis being trimmed */ 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; WH Ile ($n < strlen ($string)) { $t = Ord ($string [$n]); if ($t = 9 | | $t = 10 | | (<= $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 (<= $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)); &nbsP if ($pos!== false) { $strcut = substr ($strcut, 0, $pos); } return $strcut. $dot; }