肯定是中文、英文、特殊字符都能实现的。

//utf-8中文截取,单字节截取模式
function cn_substr_utf8($str,$length,$append='...',$start=0){
	if(strlen($str)<$start+1){
		return '';
	}
	preg_match_all("/./su",$str,$ar);
	$str2='';
	$tstr='';
	for($i=0;isset($ar[0][$i]);$i++){
		if(strlen($tstr)<$start){
			$tstr.=$ar[0][$i];
		}else{
			if(strlen($str2)<$length + strlen($ar[0][$i])){
				$str2.=$ar[0][$i];
			}else{
				break;
			}
		}
	}
	return $str==$str2?$str2:$str2.$append;
}
//----使用举例如下:
echo cn_substr_utf8('我是一个,和哈,哦也,,国家!',12);