php 将一个字符串分割为组成它的字符

问: php里如何将一个字符串分割为组成它的字符?

比如hello  -> [h, e, l, l, o]   以下有三种方法:

这是需要被分割的字符串:  $str = ‘Hello小样‘;

字符串的长度:

$len = mb_strlen($str, ‘utf8‘);// 7

 

第一种: 

$arr = str_split($str);
p($arr);

[总结]: 这里直接使用str_split 方法来分割, 但不幸的是这个方法不支持中文的解析, 这里可以考虑下mb_split的分割, 而这里为什么[小样]二字会被分割成六个乱码呢? 这里应该是utf8作怪, utf8中一个汉字占3个字节, GBK和GB2312中的一个汉字占2个字节

第二种:

$arr = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
P($arr);

[总结]: 这里使用了正则来分割字符

preg_split(pattern, subject, limit, flags)

pattern:用于搜索的模式,字符串形式;

subject: 输入的字符串;

limit: 限制多少个字符, -1|0|null表示不限制

flags: PREG_SPLIT_NO_EMPTY(返回分隔后的非空部分[常用])  PREG_SPLIT_DELIM_CAPTURE(用于分隔的模式中的括号表达式将被捕获并返回)  PREG_SPLIT_OFFSET_CAPTURE(对于每一个出现的匹配返回时将会附加字符串偏移量)

第三种:

$len = mb_strlen($str, ‘utf8‘);
$tmp = [];
for ($i = 0;$i < $len;$i++) {
    $tmp[] = $str[$i];
}
p($tmp);

[总结]: 用循环来切割字符串, 首先获取该字符串的长度, 然后for循环, 这里最后的未知字符是因为$len = 7,所以循环7次, 不同于第一种方法的utf8字符错乱问题

时间: 2024-07-30 04:20:24

php 将一个字符串分割为组成它的字符的相关文章

oracle 将一个字符串分割成多行

第一种方法: select substr(t,1,instr(t,',',1)-1) from (select substr(s,instr(s,',',1,rownum)+1)||',' as t,rownum as d ,instr(s,',',1,rownum)+1 from (select ',tt,aa,bb'  as s from dual)connect by instr(s,',','1',rownum)>1) 查询结果: SUBSTR(T,1,INSTR(T,',',1)-1)

Java中的字符串分割 .

转自 http://blog.csdn.net/yuwenhao0518/article/details/7161059 http://longkm.blog.163.com/blog/static/116662640200971541741/ java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: java.lang.string.split spl

java中的字符串分割函数

java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator,[limit]]) stringObj 必选项.要被分解的 String 对象或文字,该对象不会被split方法修改.

strtok():“字符串分割”实用函数

最近一直纠结于一个十分简单的问题:如何将一个字符串按标志分割开来?提出这个问题的初衷是自己在处理一个将命令行字符串转换为argc,argv格式的问题. 尝试了很多种方法,最后觉得利用strtok()函数来实现是一个比较好的方法.首先进行strtok()函数的介绍. char *strtok(string, control);  --- Tokenize string with delimiter in control. --- 通过分割符控制将字符串切片化. Purpose: strtok co

字符串分割函数StringTokenizer与strtok,strsep的比较

字符串分割在我们在开发过程中经常遇到的问题.根据一个标记串,将输入的字符串分割成多个子串.实际编码当中,我们发现使用不同的函数得到的结果也会有区别. 为了方便比较,我们定义一个统一的输入输出比较方式: vector<string> parsetoken(const string &str, const string& delim); 输入源字符串str,分割标记串为delim,分割的子串保存到vector<string>中. 我们分别使用内部的StringToken

将一个字符串转化为驼峰表示法表示

方法很简单,主要考察对字符串中split方法和slice方法的运用 split() 方法用于把一个字符串分割成字符串数组 第一个参数是必需的,可以是字符串或正则表达式,从该参数指定的地方分割 stringObject. 第二个参数是可选的,表示该参数可指定返回的数组的最大长度. slice() 方法可从已有的数组中返回选定的元素,可以用slice来删除字符串中的第一位字符. 代码如下: <!DOCTYPE html> <html lang="en"> <h

C++ 字符串分割

2017-06-26 21:47:06 这几天在做大数据的处理,需要处理几百万的数据.由于一直用的是c++,所以就直接用c++进行了编码. 不过后来经过学长的提醒发现其实字符串处理,尤其是处理csv文件(由逗号作为分割符)时,需要将各个部分分割开来,如果用Java或者Python进行处理的话会非常方便,比如Java就有split函数进行字符串的分割,不过我在查询资料之后发现c++中并没有现成的针对string的字符串分割函数.于是我自己写了一个split函数. 这个函数的声明是 void spl

C/C++ 字符串分割: strtok 与 strsep 函数说明

函数原型: char *strtok(char *s, const char *delim); char *strsep(char **s, const char *delim); 功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串. 返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL. 相同点:两者都会改变源字符串,想要避免,可以使用strdupa(由allocate函数实现)或strdup(由malloc函

Matlab实现字符串分割

Matlab实现字符串分割(split) Matlab的字符串处理没有C#强大,本身又没有提供OO特性,需要依赖别的手段完成这项任务. 我们在这里借助正则表达式函数regexp的split模式.一般语法: S = regexp(str, char, 'split') 其中str是待分割的字符串,char是作为分隔符的字符(可以使用正则表达式).分割出的结果存在S中. 以下面这样一串字符为例 Hello Nocturne Studio 首先去除首尾的多余空格: str = deblank(str)