PHP Language: Cut strings based on Chinese
Copy CodeThe code is as follows:
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 (<= $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;
}
http://www.bkjia.com/PHPjc/328152.html www.bkjia.com true http://www.bkjia.com/PHPjc/328152.html techarticle PHP Language: Copy the code code according to the Chinese cut string as follows: function Cutstr ($string, $length, $dot = ' ... ') {if (strlen ($string) = $length) {return$ String } $pre = Chr (1);