У меня проблемы с этим куском кода. Что нужно сделать, это взять строку, разбить ее на слово, а затем сравнить со словарем. Однако, когда строка содержит «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.
Чтобы соответствовать только целым словам, используйте границы слов:
'/\b\p{L}+\b/u'
Если у вас есть диакритические знаки, также добавьте \p{M}
:
'/\b[\p{M}\p{L}]+\b/u'
Других решений пока нет …