频道栏目
首页 > 资讯 > Smarty > 正文

smart下截取汉字(utf8编码和gb2312编码)

16-01-08        来源:[db:作者]  
收藏   我要投稿

utf-8编码,一个汉字占三个字节:

php代码:

gb2312编码,一个汉字占两字节:

php代码:

function smarty_modifier_cntruncate($string, $strlen = 20, $etc = '...', $keep_first_style = false)
{
$strlen = $strlen*2;
$string = trim($string);
if ( strlen($string) <= $strlen ) {
return $string;
}
$str = strip_tags($string);
$j = 0;
for($i=0;$i<$strlen;$i++) {
if(ord(substr($str,$i,1))>0xa0) $j++;
}
if($j%2!=0) $strlen++;
$rstr=substr($str,0,$strlen);
if (strlen($str)>$strlen) {$rstr .= $etc;}

if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) {
if ( strlen($str) <= $strlen ) {
return $string;
}
$start_pos = strpos($string,substr($str,0,4));
$end_pos = strpos($string,substr($str,-4));
$end_pos = $end_pos+4;
$rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string));
}
return $rstr;
}

function smarty_modifier_cntruncate($string, $strlen = 20, $etc = '...', $keep_first_style = false)
{
$strlen = $strlen*3;
$string = trim($string);
if ( strlen($string) <= $strlen ) {
return $string;
}
$str = strip_tags($string);
$j = 0;

for($i=0;$i<$strlen;$i++) {
if(ord(substr($str,$i,1))>0xa0){ $i+=2; $j+=3;}
else {$j++;}
}

$rstr=substr($str,0,$j);
if (strlen($str)>$strlen ) {$rstr .= $etc;}

if ( $keep_first_style == true && ereg('^<(.*)>$',$string) ) {
if ( strlen($str) <= $strlen ) {
return $string;
}
$start_pos = strpos($string,substr($str,0,4));
$end_pos = strpos($string,substr($str,-4));
$end_pos = $end_pos+4;
$rstr = substr($string,0,$start_pos) . $rstr . substr($string,$end_pos,strlen($string));
}

return $rstr;

}

相关TAG标签
上一篇:CI框架的分页怎么用(含代码写给新手)
下一篇:CI框架里面PHPExcel的使用|导出数据到Excel文件
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站