今天在这里分享最近在英文网站中优化的一个小改进,Phpcms V9截取字符函数改进,截取英文更精确,具体方法来自PC官方论坛,分享在此.
官方默认的str_cut()截取的字符统计长度不精准,特别是在中英文字符混搭的时候,调用列表会出现问题,采用【拽拽焱】分享的方法,可以将长度偏差在2个字符内,很不错,先赞一个.
具体代码:
/**
* 字符截取 支持UTF8/GBK
* @param $string
* @param $length
* @param $dot
*/
} else {
while($n < $strlen) {
if(ord($string[$n]) > 127) {
$tn = 2; $n += 2; $noc += 1;
} else{
$tn = 1; ++$n; $noc += 0.5;
}
if($noc >= $length) {
if($n < $strlen) ++$noc;
break;
}
}
}
if($noc > $length && !emptyempty($dot)) {
$n -= $tn;
$strcut = substr($string, 0, $n);
$strcut .= $dot;
}else{
$strcut = substr($string, 0, $n);
} //Cuoxin.com
$strcut = str_replace(array('&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), array('&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
return $strcut;
}