$str = "中文123美丽abc开心。?我们";
echo preg_replace('#(?:(?![,。?])[\xC0-\xFF][\x80-\xBF]+)+#','$0',$str);
//(?:[\xC0-\xFF][\x80-\xBF]+) 单个中文字符,不需要引用,因此使用?:
//(?![,。?]) 排除中文标点符号,这里要写入中文标点
//(?:(?![,。?])[\xC0-\xFF][\x80-\xBF]+) 排除中文标点符号后的中文字符
//(?:[\xC0-\xFF][\x80-\xBF]+)+ 1个以上的中文字符
//结果 中文123美丽abc开心。?我们
?>