首页 > PHP资讯 > PHP培训技术 > smart下截取汉字(utf8编码和gb2312编码)

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

PHP培训技术

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;

 

 

}

 

PHP培训技术

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持33不支持0