在PHP中,将字符串视为不可变通常是一种常见做法。有时需要修改字符串"就地"。
我们采用额外的阵列创建方法。
此数组应包含源字符串中的每个字母。
在PHP(str_split)中有一个函数。一个问题是,它不能很好地处理多字节编码。
还有一个mb_split函数,它将正则表达式作为分隔符序列的输入参数。所以
mb_split('.', '123')
返回['','','','']。
但是:
mb_split('', '123')
返回[' 123']。
所以我相信有一个对应的正则表达式匹配多字节字符序列的任何变体之间的空白空间。
所以对于' 123'它应该匹配
'1~2', '2~3'
其中〜是实际匹配。这就像\ b但是对于任何事情。
是否有正则表达式黑客攻击?
答案 0 :(得分:1)
使用
preg_match_all('~\X~u', $s, $arr)
$arr[0]
将包含所有字符。 \X
模式matches any Unicode grapheme。 /u
修饰符是必要的,以使正则表达式引擎将输入字符串视为Unicode字符串并使模式识别Unicode。
请参阅PHP dem o。