例如,我在客户请求中有以下字符串:
我学习中国的语言, 国的语言.
我想获得一系列字符,包括空格,逗号,圆点等,所以基本上我需要按照这样的字符细分:
$characters = [
"我", "学", "习", "中", "国", "的", "语", "言", ",", " ", "国", "的","语","言"
]
我认为我需要使用一些多字节函数,因为中文字符可以占用3个或更多字节。我可以使用什么regexp表达式来获取该数组?
答案 0 :(得分:3)
使用preg_match_all
preg_match_all('~.~u', $str, $match);
.
匹配任何字符,但不匹配换行符。但是,当使用.
DOTALL修饰符时,相同的s
将匹配任何字符甚至换行符。由于您的输入包含Unicode字符,因此您必须启用u
修饰符。
或
通过preg_split
$str = "我学习中国的语言, 国的语言.";
$split = preg_split('~(?<=.)(?=.)~u', $str);
print_r($split);
示例:强>
$str = "我学习中国的语言, 国的语言.";
preg_match_all('~.~u', $str, $match);
print_r($match);
<强>输出:强>
Array
(
[0] => Array
(
[0] => 我
[1] => 学
[2] => 习
[3] => 中
[4] => 国
[5] => 的
[6] => 语
[7] => 言
[8] => ,
[9] =>
[10] => 国
[11] => 的
[12] => 语
[13] => 言
[14] => .
)
)