php 将一个字符串分割为组成它的字符
问: 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 将一个字符串分割为组成它的字符的更多相关文章
- Java中的字符串分割 .
转自 http://blog.csdn.net/yuwenhao0518/article/details/7161059 http://longkm.blog.163.com/blog/static/ ...
- java中的字符串分割函数
java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: ...
- SQL点滴3—一个简单的字符串分割函数
原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,” 遇到其他情况只要稍加修改就好了 CREATE FUN ...
- Java实现——字符串分割以及复制目录下的所有文件
0. 前言 今天有个需求,把Android中data/data目录下指定(通过读预置的XML文件)的多个应用下的多个目录全部内容通过OTG模式复制到U盘中. 首先读取XML文件内的某个节点的属性值, ...
- hdu 2072 1106学一波字符串分割,C语言与C++两种方法
hdu2072:题意:输出给定字符串中的单词数(一个句子中可能有两个相同的单词),这里的思想是把每个单词取出来,放入set(这个集合容器中不允许有相同的元素)中,最后输出该集合的大小即可. 现在的问题 ...
- SQL Server 游标运用:鼠标轨迹字符串分割
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...
- Oracle 超长字符串分割劈分
Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大.... 下面,,,,直奔主题了: CREATE OR REPLACE FUNCTION splitstr(p_string IN clo ...
- php学习零散笔记—字符串分割、fetch函数和单双引号。
1 字符串分割——split()函数和preg_split()函数 split — 用正则表达式将字符串分割到数组中——貌似PHP5.3以上已不赞成使用 array split ( string $p ...
- 工作中用到的oracle字符串分割整理
oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...
随机推荐
- linux下安装oracle中遇到的一些问题
1.出现了:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to da tabase unique ...
- mysql的grant用法(转)
GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8DA28D49245BF69F ...
- C#:SqlServer操作的知识点
1.检查数据库连接的有效性 var client = new System.Net.Sockets.TcpClient(); var ar = client.BeginConnect(host, ...
- 和求余运算巧妙结合的jns指令
.text:004A78B1 and eax, 80000001h.text:004A78B6 jns short loc_4A78BD.text:004A78B8 dec eax.text:00 ...
- resharper警告 :linq replace with single call to FirstOrDefault
使用resharper时对linq使用的FirstOrDefault 一直产生一个警告,
- IOS基于XMPP协议开发--XMPPFramewok框架(三):用户注册
接着上面说 用户注册是比较简单的,成功连接上服务器后,设置好JID,即可调用 [_xmppStream registerWithPassword:pwd error:&err] 进行注册 -( ...
- MySQL慢查询查找和调优测试
MySQL慢查询查找和调优测试,接下来详细介绍,需要了解的朋友可以参考下.本文参考自:http://www.jbxue.com/db/4376.html 编辑 my.cnf或者my.ini文件,去除 ...
- PaaS 平台的网络需求
在使用 Docker 构建 PaaS 平台的过程中,我们首先遇到的问题是需要选择一个满足需求的网络模型: 让每个容器拥有自己的网络栈,特别是独立的 IP 地址 能够进行跨服务器的容器间通讯,同时不依赖 ...
- Windows API中的坑
本文主页链接:Windows API中的坑 ExpandEnvironmentStrings 风险: 进程会继承其父进程的环境变量.在展开如%APPDATA%等文件夹时,有可能父进程对此环境变量进行过 ...
- UIWebView和UICollectionViewController的使用
UIWebView和UICollectionViewController的使用 UIWebView UIWebView是iOS内置的浏览器的控件, 可以浏览网页, 打开文档等 .系统自带的Safari ...