/**
* Character interception support UTF8/GBK
* @param $string
* @param $length
* @param $dot
*/
Function Str_cut ($string, $length, $dot ='...') {
$strlen = strlen ($string);
if($strlen <= $length)return$string;
$string= Str_replace (Array (' ',' ','&','"',''','“','”','—','<','>','·','…'), Array ('∵',' ','&','"',"'",'"','"','-','<','>','·','... ..'), $string);
$strcut ="';
if(Strtolower (CHARSET) = ='Utf-8') {
$length = Intval ($length-strlen ($DOT)-$length/3);
$n = $tn = $noc =0;
while($n < strlen ($string)) {
$t = Ord ($string[$n]);
if($t = =9|| $t = =Ten|| ( +<= $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);
$strcut = Str_replace (Array ('∵','&','"',"'",'"','"','-','<','>','·','... ..'), Array (' ','&','"',''','“','”','—','<','>','·','…'), $strcut);
}Else{
$dotlen = strlen ($dot);
$maxi = $length-$dotlen-1;
$current _str ="';
$search _arr = Array ('&',' ','"',"'",'"','"','-','<','>','·','... ..','∵');
$replace _arr = Array ('&',' ','"',''','“','”','—','<','>','·','…',' ');
$search _flip = Array_flip ($search _arr);
for($i =0; $i < $maxi; $i + +) {
$current _str = Ord ($string[$i]) >127? $string[$i].$string[+ + $i]: $string[$i];
if(In_array ($current _str, $search _arr)) {
$key = $search _flip[$current _str];
$current _str = str_replace ($search _arr[$key], $replace _arr[$key], $current _str);
}
$strcut. = $current _str;
}
}
return$strcut. $dot;
}
Character Interception support UTF8/GBK