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

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

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

字符串的长度:

$len = mb_strlen($str, 'utf8');//

 

第一种: 

$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字符错乱问题

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

  1. Java中的字符串分割 .

    转自 http://blog.csdn.net/yuwenhao0518/article/details/7161059 http://longkm.blog.163.com/blog/static/ ...

  2. java中的字符串分割函数

    java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: ...

  3. SQL点滴3—一个简单的字符串分割函数

    原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,”  遇到其他情况只要稍加修改就好了 CREATE FUN ...

  4. Java实现——字符串分割以及复制目录下的所有文件

    0.  前言 今天有个需求,把Android中data/data目录下指定(通过读预置的XML文件)的多个应用下的多个目录全部内容通过OTG模式复制到U盘中. 首先读取XML文件内的某个节点的属性值, ...

  5. hdu 2072 1106学一波字符串分割,C语言与C++两种方法

    hdu2072:题意:输出给定字符串中的单词数(一个句子中可能有两个相同的单词),这里的思想是把每个单词取出来,放入set(这个集合容器中不允许有相同的元素)中,最后输出该集合的大小即可. 现在的问题 ...

  6. SQL Server 游标运用:鼠标轨迹字符串分割

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...

  7. Oracle 超长字符串分割劈分

    Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...

  8. php学习零散笔记—字符串分割、fetch函数和单双引号。

    1 字符串分割——split()函数和preg_split()函数 split — 用正则表达式将字符串分割到数组中——貌似PHP5.3以上已不赞成使用 array split ( string $p ...

  9. 工作中用到的oracle字符串分割整理

    oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...

随机推荐

  1. 【TP3.2】模板引用头和尾.html文件

    传送门:http://document.thinkphp.cn/manual_3_2.html#include 使用模版表达式 模版表达式的定义规则为:模块@主题/控制器/操作 例如: <inc ...

  2. numpy.argmin 使用

    https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.argmin.html numpy.argmin(a, axis=N ...

  3. github get 请求指定页面的代码

    https://raw.githubusercontent.com/dragon8github/wx-h5/master/push.sh

  4. SpringCloud-服务注册与发现

    这里我们会用到Spring Cloud Netflix,该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的N ...

  5. [Jobdu] 题目1408:吃豆机器人

    题目描述: 淘宝公司内部有许多新鲜的小玩具,例如淘宝智能机器人.小时候,大家都玩过那个吃豆子的游戏吧,这机器人就是按照这个游戏设计的,它会朝着豆子的方向行走.不过机器人还存在一个bug,他只会朝南和朝 ...

  6. union共用体的对齐

    union DATE { char a; ]; double b; }; DATE max; cout<< sizeof(max) << endl; 这个问题很好回答,并且我把 ...

  7. atitit.提升软件开发的生产力关健点-------大型开发工具最关健

    atitit.提升软件开发的生产力关健点-------大型开发工具最关健 1. 可以创作出更好的工具遍历自己 1 2. 大型工具包括哪些方面 2 2.1. ide 2 2.2. dsl 2 2.3.  ...

  8. ios端 返回上一级后 卡在正在加载中处理方式

    //返回上一页 $('#goback').click(function () { history.back(); }); //判断是否为ios系统,若为ios则监听并重载 var u = naviga ...

  9. JAVA数字特征值

    数字特征值(5分) 题目内容: 对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值.对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推.这个整数在第n位上的数字记作x, ...

  10. 信号处理函数(3)-sigaction() 为信号注册信号捕捉函数

    定义: int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact); 表头文件: #include& ...