3

我正在尝试使用 preg_split 从 php 中的字符串中获取单词,如下所示:

$result = preg_split('/[^A-Za-z]+/', $text)

但这不起作用,有些单词是分裂的,我做错了什么?

编辑:事实是它不适用于俄罗斯文本 = "фыва ывафы фываф";

$result = preg_split('/[^А-яа-я]+/', $text)
4

2 回答 2

10

[^A-Za-z]只考虑 ASCII 字母。您需要拆分 Unicode 非字母:

$result = preg_split('/\P{L}+/u', $subject);

[^А-Яа-я]+也不起作用,因为在 Unicode 字符集中,А(0x0410) 不是第一个 Kyrillian 字母,并且я(0x044F) 不是最后一个。看来这些荣誉属于Ё(0x0401) 和ӹ(0x04F9)。我根本不懂俄语,所以我无法推测为什么会这样。

您可以使用字符映射程序轻松检查:

屏幕截图

于 2012-11-11T06:46:25.040 回答
0
$str ="As sdf fdasf";
$result = preg_split('/[\b ]/', $str);

编辑:

$result = preg_split('/\b\s+/', $str); //this is not for Unicode 
于 2012-11-11T06:49:20.923 回答