我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文说一个php下的一个相对无用的函数str_split(),说它的主要原因是:想弄明白这个函数和已经被废弃的split()函数的区别,或者说和现在的explode()这个函数的区别。仅此而已,无它。

苏南大叔:如何使用php的str_split()和mb_str_split()?字符串切割成数组 - str_split字符串变数据
如何使用php的str_split()和mb_str_split()?字符串切割成数组(图3-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程故事。本文测试环境:win10php@8.2.11nginx@1.15.11

函数原型

str_split(string $string, int $length = 1): array

将一个字符串转换为数组。

【参数】:

  • string,输入字符串。
  • length,每一段的长度。

【返回值】:
如果指定了可选的length参数,返回数组中的每个元素长度均为length的块,除了最后一个块,如果字符串不是均匀划分,则可能会更短。默认length1,这意味着每个块的大小是一个字节。

普通分割 str_split

直接上代码,一眼看明白。

$str = "苏南sunan";
print_r(explode("su", $str));
print_r(str_split($str));
print_r($str[0]);

不过,运算结果又是一个刷新认知的结果了。如下图所示:

苏南大叔:如何使用php的str_split()和mb_str_split()?字符串切割成数组 - str_split汉字被分割
如何使用php的str_split()和mb_str_split()?字符串切割成数组(图3-2)

汉字分割 mb_str_split

开启mb_string.so扩展后,再看看新的函数对比:

$str = "苏南sunan";
print_r(str_split($str,3));
print_r(mb_str_split($str));
print_r(mb_str_split($str,3));

苏南大叔:如何使用php的str_split()和mb_str_split()?字符串切割成数组 - mb_str_split分割汉字
如何使用php的str_split()和mb_str_split()?字符串切割成数组(图3-3)

对比结论

对比之下,有如下代码结论:

  • 一个utf8汉字占3个字节的位置。这个事情,可以从上述代码的运行结果充分证明。
  • explode()/split()是使用一个小字符来分割一个大字符。
  • str_split()/mb_str_split()是分割一个大字符串分割成几个几乎等长的小字符串,每个小字符串占N个(字节)长度。

结语

苏南大叔的博客更多是给自己看的,就是个知识积累的笔记本。更多php文章,参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php