第1个回答 2010-07-04
用 mb_substr 截取字符串,PHP5以上应该都有了没有的话用 iconv_substr 再没有的话用正则。。。
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
第2个回答 2010-07-05
function strcut($str,$len,$suffix=false,$charset='utf-8'){
if($suffix){
return mb_substr($str,0,$len,$charset)."...";
}else{
return mb_substr($str,0,$len,$charset);
}
}
用例:
$a = "aaaaaaaaaaaaaaaaassssssssssxxxxx";
$str = strcut($a,10,true);
echo($str);本回答被提问者采纳