我们都知道字符串可以使用str_split分割成数组
1 | $str = 'abcdefg'; |
但当遇到中文的时候就出问题了,中文使用str_split分割过后全都变成了乱码,怎么解决呢?
答案是使用正则表达式解决:
1 | /** |
正则表达式/(?<!^)(?!$)/u可以匹配多字节字符,
(?<!^)和(?!$)都是零宽断言,前者表示此位置之前不匹配^,后者表示此位置之后不匹配$。
在正则中^和$单独用表示开头和末尾。
也就是说(?<!^)表示此位置之前不匹配开头,(?!$)表示此位置之后不匹配末尾。
所以这个split匹配到的部分,为每两个字的中间位置(但是没有匹配到任何实际的字符)。