如何在PHP中使用正则表达式将文本拆分为Unicode单词

Yun*_*zel 2 php regex unicode

我有一个网站模块,它从twitter收集一些推文,并将它们分成文字放入数据库.但是,由于推文通常有土耳其字符[ıöüğşçİÖÜĞŞÇ],我的模块不能正确划分单词.

例如,短语Aynılabdaçalıştığım分为Ayn,labdaalıştığım,但它本应分为Aynı,labdaçalıştığım

这是我的代码,它完成了这项工作:

preg_match_all('/(\A|\b)[A-Z\Ç\Ö\?\?\?\Ü]?[a-z\ç\ö\?\?\?\ü]+(\Z|\b)/u', $text,$a);
Run Code Online (Sandbox Code Playgroud)

你认为这里有什么问题?

重要说明:我不会因空格字符拆分文本而愚蠢,我需要完全匹配这些字符.我不想要任何数字或特殊字符,如[,.!@#$ ^&*123456780].

我需要一个正则表达式,将分裂这个 kısaisimleriile"Vic"ve"Wick"vardı.

进入这个:

k?sa
isimleri
ile
Vic
ve
Wick
vard?
Run Code Online (Sandbox Code Playgroud)

更多例子:

我们是@test会的

We
re
test
Run Code Online (Sandbox Code Playgroud)

Fööbär,我们@testto0ÅÄÖ - 123好吗?kthxbai?分成这个,

b
r
we
re
test
ok
kthxbai
Run Code Online (Sandbox Code Playgroud)

但我希望它是:

Föö
bär
we
re
test
ÅÄÖ
ok
kthxbai
Run Code Online (Sandbox Code Playgroud)

Cha*_*rry 6

我会看看mb_split().

$str = 'We\'re @test Ayn? labda çal??t???m';
var_dump(\mb_split('\s', $str));
Run Code Online (Sandbox Code Playgroud)

给我:

array
  0 => string 'We're' (length=5)
  1 => string '@test' (length=5)
  2 => string 'Ayn?' (length=5)
  3 => string 'labda' (length=5)
  4 => string 'çal??t???m' (length=16)
Run Code Online (Sandbox Code Playgroud)