代码

function cutstr($str,$cutleng){
    //要截取的字符串
    $str = $str;
    
    //要截取的长度
    $cutleng = $cutleng;

    //字符串长度
    $strleng = strlen($str);
    
    if($cutleng < $strleng){
        return $str;
    }
    
    $notchinanum = 0;
    
    for($i=0;$i<$cutleng;$i++){
        if(ord(substr($str,$i,1)){
            $notchinanum++;
        }
    }
    
    //如果要截取奇数个字符,所要截取长度范围内的字符必须含奇数个非汉字,否则截取的长度加一
    if(($cutleng%2 == 1) && ($notchinanum%2 == 0)){
        $cutleng++;
    }
    
    //如果要截取偶数个字符,所要截取长度范围内的字符必须含偶数个非汉字,否则截取的长度加一
    if(($cutleng%2 == 0) && ($notchinanum%2 == 1)){
        $cutleng++;
    }
    return substr($str,0,$cutleng);
}