中英文截取字符串的问题,应该是正则表达式的问题!!大家帮帮忙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').'...';
}
}
}
$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').'...';
}
}
}
//$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').'...';
} }
}