• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

【PHP】php分隔字符串为数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

工作中会经常分隔字符串为数组,我们可以用php内置函数str_split(),可是有时候字符串中包含中文,切割后会乱码,比如

print_r(str_split('dw氛围fesf',3));

 输出

Array
(
    [0] => php
    [1] =>  �
    [2] => ��
    [3] => ��
    [4] => ��
    [5] => ��
    [6] => �!!
    [7] => !
)


为了能处理多字节字符串
下面函数可以实现
function mbStringToArray($str) {
    if(empty($str)){
       return false;
    }
    $len = mb_strlen($str);
    $array = array();
    for($i = 0; $i<$len; $i++) {
        $array[] = mb_substr($str, $i, 1);
    }
    return $array;
}
/**
  * @param str $str    
  * @param int $length 截取长度
  * @param boole $byte 是否按字节分隔 false 按字符数分隔
  * @return array
*/
function _str_split($str,$length,$byte=false){
    if(mb_strwidth($str) == 1 || empty($str)){
       return $str;
    }
    if($encoding = mb_detect_encoding($str, null, true) === false ){
       return str_split($str, $length);
    }
    $utf8_str = mb_convert_encoding($str, 'utf8', $encoding);
    if($byte){
        $line = '';
        $split_arr = [];
        foreach (preg_split('//u', $utf8_str,-1,PREG_SPLIT_NO_EMPTY ) as $char) {
            $width = mb_strwidth($line.$char,'utf8');
            if($width <= $length){
                $line .= $char;
                continue;
            }
            $split_arr[] = str_pad($line, $width);
            $line = $char;
        }
        return $split_arr;
    }else{
        $str_arr = mbStringToArray($str);
        if($str_arr){
            $chunk_index = 0;
            $k_index = 0;
            $line = '';
            $chunks = [];
            foreach ($str_arr as $key=>$val){
                $line .= $val;
                $chunks[$k_index] = $line;
                if ($chunk_index++ == $length-1) {
                    $line = '';
                    $k_index++;
                    $chunk_index = 0;
                }
            }
        }
        return $chunks;
    }

}

 执行

print_r(_str_split($str,3,false));

 输出

Array
(
    [0] => php
    [1] =>  开发
    [2] => 者中心
    [3] => !!!
)

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP-四级单词lrc文件解析为txt发布时间:2022-07-10
下一篇:
PHP设置Rediskey在当天有效发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap