我在这段代码上遇到了问题。它应该做的是获取一个字符串,按单词拆分,然后根据字典进行检查。但是,当字符串包含"Umlaut"ÄäÖöÜü时,它会将其拆分为"Umlaut"ÄäÖÜü。
我很确定问题出在[A-ZäöüÄÖÜ']
似乎我错了包括特殊的猎人,但是如何呢?
$string = "Rechtschreibprüfung";
preg_match_all("/[A-ZäöüÄÖÜ']{1,16}/i", $string, $words);
for ($i = 0; $i < count($words[0]); ++$i) {
if (!pspell_check($pspell_link, $words[0][$i])) {
$array[] = $words[0][$i];
}
}
结果:
$array[0] = Rechtschreibprü"
$array[1] = "fung"
要匹配一大块 Unicode 字母,您可以使用
'/p{L}+/u'
p{L}
匹配任何 Unicode 字母,+
匹配前面子模式的一个或多个匹配项,/u
修饰符将模式和字符串视为 Unicode 字符串。
要仅匹配整个单词,请使用单词边界:
'/bp{L}+b/u'
如果您有音调符号,还要添加p{M}
:
'/b[p{M}p{L}]+b/u'