【php】php分隔字符串为数组
工作中会经常分隔字符串为数组,我们可以用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] => !!!
)
【php】php分隔字符串为数组的更多相关文章
- [Shell] 分隔字符串为数组
		#!/bin/bash tmp="test,girl,boy,love" OLD_IFS="$IFS" IFS="," arr=($a) I ... 
- mysql下将分隔字符串转换为数组
		MySQL存储过程可以用于分割字符串,下面就为您详细介绍这种MySQL存储过程的用法,供您参考学习之用. 现有一段字符串,如apple,banana,orange,pears,grape,要把它按照逗 ... 
- SQL自定义函数split分隔字符串
		SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max ... 
- shell入门笔记2:字符串、数组、echo与printf
		说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell字符串 字符串可以用单引号,也可以用双引号,也可以不用引号. 1 #!/bin/bash 2 ... 
- (js) 字符串和数组的常用方法
		JS中字符串和数组的常用方法 JS中字符串和数组的常用方法 js中字符串常用方法 查找字符串 根据索引值查找字符串的值 根据字符值查找索引值 截取字符串的方法 字符串替换 字符串的遍历查找 字符串转化 ... 
- javascript中字符串与数组互转的方法分享
		说明:1.join()方法:用于把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的.指定分隔符方法join("$");其中$可以是任意字符2.split()方法:用 ... 
- 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!
		split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator],[limit])参数:stringObj 必选项.要被分解的 ... 
- ios 字符串处理:截取字符串、匹配字符串、分隔字符串
		1.截取字符串 NSString*string =@"sdfsfsfsAdfsdf";string = [string substringToIndex:7];//截取掉下标7之后 ... 
- C#分隔字符串时遭遇空值
		在C#中分隔字符串时,按特定字符进行分隔的时候可能会遇到空值,如何我现在传入的是Id的字符串,如:"1501,1502,1503,,1505",以逗号分隔,由于各种原因,导致传入的 ... 
随机推荐
- windows下linux子系统安装
			1.打开Windows功能中的使用于linux的Windows子系统 2.应用商店中下载需要的linux 3.下载完成后运行等待安装并输入用户名密码 4.查看系统信息 先后 sudo apt-get ... 
- 基于redis实现的点赞功能设计思路详解
			点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ... 
- php开发之常用验证方法
			1.邮箱验证 function isEmail($email) { if (!$email) { return false; } return preg_match('/^[_\.0-9a-z-]+@ ... 
- React Native之TextInput的介绍与使用(富文本封装与使用实例,常用输入框封装与使用实例)
			React Native之TextInput的介绍与使用(富文本封装与使用实例,常用输入框封装与使用实例) TextInput组件介绍 TextInput是一个允许用户在应用中通过键盘输入文本的基本组 ... 
- 13 Connectors: show contrast/oppistion
			1 "but" 和 "yet" 用来显示两个意思之间的对比关系.在写作中,当 "but" 和"yet" 将两个分句连为一 ... 
- Latex常用软件
			Linux texMaker sudo apt-get install texlive-full sudo apt-get install texmaker 
- 重启iis命令
			iisreset 
- 在使用IWMS的时候,IWMS自带函数样式无法满足我们需求。以下一段JS是实现左图右字的适用于IWMS的代码。
			<div class="wz-list">里边需要有html做好的Html代码样式</div> <script> var attrnew = & ... 
- fiddler 笔记-重定向
			重定向功能:主要是进行会话的拦截,然后替换原始资源的功能 选择请求-到autoresponser面板-勾选 enable rules :add rules 设置如下: 2 在浏览器中请示url-页面跳 ... 
- jQuery插件开发的基本形式
			(function ($, window, document, undefined) { "use strict"; var defaults = { pageIndex: 0, ... 
