找了很多这样的函数,还是觉的这个最好了 $a = 'aadfdsf夺顶替一枯基22245顶替sdffh压下'; /** * 截取utf-8字符 * @param string $string * @param int$length * * return string */ function cutstr($string, $length) { preg_match_all("/./u", $string, $info); $i = 0; $str = ''; foreach($info[0] as $item){ if(strlen($item) == 3){ $i+=2; }else{ $i++; } $str .= $item; if($i>=$length)break; } return $str; } echo cutstr($a, 10); //-> aadfdsf夺顶