我有一个网站模块,它从twitter收集一些推文,并将它们分成文字放入数据库.但是,由于推文通常有土耳其字符[ıöüğşçİÖÜĞŞÇ],我的模块不能正确划分单词.
例如,短语Aynılabdaçalıştığım分为Ayn,labda和alış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)
我会看看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)