中英文截取字符串的问题,应该是正则表达式的问题!!大家帮帮忙function cutStr( $str, $number){
$str = strip_tags($str);
if(strlen($str) <= $number){
return $str;
}
else{
if(preg_match('/[a-zA-Z][\x7f-\xff]*/i', $str))
{
//当都有中文英文的情况下截取
return mb_substr($str,0,$number+2,'utf-8').'...';
}
if(preg_match('/[a-zA-Z]*/i', $str))
{
//当都为英文情况下截取
return mb_substr($str,0,$number+4,'utf-8').'...';
}
if(preg_match('/[\x7f-\xff]*/i', $str))
{
//当都为中文情况下截取
return mb_substr($str,0,$number,'utf-8').'...';
}
}
}

解决方案 »

  1.   

    !!!!!!//$str字符串
    //$number为最大长度
    function cutStrTitle($str, $number){
         $str = strip_tags($str);
         $en=preg_match('/^[a-zA-Z]/', $str);//匹配英文字母
         $cn=preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$str,$arrc);//匹配汉字,统计个数,返回给$arrc   
    if(mb_strlen($str,'UTF8')<= $number){//'UTF8'跟据字符串的格式调整
    return $str;
    }
    else{
    if($en)
    {
    if($cn){
    //中英文混合情况下
    return mb_substr($str,0,$number+2,'utf-8').'...';
    }
    else{
    //全为英文情况下
    return mb_substr($str,0,$number+4,'utf-8').'...';
    }
    }
    else {
    //全为中文情况下
    return mb_substr($str,0,$number,'utf-8').'...';
    } }
    }