原字符串样式:
$str = 'IT基地59zone.com交流平台';
按每个元素6个字节处理后的数组样式:
array( [0] => 'IT基地', [1] => '59zone', [2] => '.com交', [3] => '流平台', )
具体实现代码如下:
//把字符串按照指定长度截取成数组 /* * String $str 需要拆分的字符串 * String $l 指定每个数组元素中字符长度 * return Array 分割之后的数组 */ public function str_split_unicode($str, $l=0) { if ($l > 0) { $ret = array(); $len = mb_strlen($str, "UTF-8"); $len2 = strlen($str); if($len==$len2){ //纯字母数字 $l = $l * 1.75; for ($i = 0; $i < $len; $i += $l) { $ret[] = mb_substr($str, $i, $l, "UTF-8"); } return $ret; }else{ $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; preg_match_all($pa, $str, $t_string); $matharr = ""; foreach($t_string[0] as $k=>$s){ $matharr[] = $s; } $i = $j = 0; $count = count($matharr); $str2 = ''; $arrs = array(); foreach($matharr as $k=>$v){ $j++; $str2 .= $v; if(strlen($v)==mb_strlen($v)){ //字母或数字 $i = $i + 1; }else{ //中文 $i = $i + 2; } if($i>=$l || $j==$count){ $arrs[] = $str2; $i = 0; $str2 = ''; } } return $arrs; } } return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY); }
版权声明:本站所提供的文章、图片等内容均为用户发布或互联网整理而来,仅供学习参考,如有侵犯您的版权,请联系我们客服人员删除。