У меня есть функция, которая автоматически исправляет строку. Он исправляет слова с ошибками, как и ожидалось. Эта проблема, с которой я сталкиваюсь, заключается в том, что она не исправит написанное американцами слово в британском эквиваленте.
$pspell = pspell_new('en','british','','utf-8',PSPELL_FAST);
function spellCheckWord($word) {
global $pspell;
$autocorrect = TRUE;
// Take the string match from preg_replace_callback's array
$word = $word[0];
// Ignore ALL CAPS
if (preg_match('/^[A-Z]*$/',$word)) return $word;
// Return dictionary words
if (pspell_check($pspell,$word))
return $word;
// Auto-correct with the first suggestion
if ($autocorrect && $suggestions = pspell_suggest($pspell,$word))
return current($suggestions);
// No suggestions
return $word;
}
function spellCheck($string) {
return preg_replace_callback('/\b\w+\b/','spellCheckWord',$string);
}
echo spellCheck('This is a color.');
Приведенный выше пример не обнаруживает орфографическую ошибку. Как я могу заставить это измениться color
в colour
и то же самое для таких слов, как favorite
в favourite
?
Глядя на официальную документацию для pspell_new()
метод — есть комментарий относительно различных значений для параметра «орфография» — который используется, чтобы установить, какая версия языка используется;
Я думаю, что язык и параметры правописания отличаются в разных версиях PHP и / или в дистрибутивах aspell / UNIX.
Мой PHP 5.2.6 Debian игнорирует параметр правописания.
Вместо:
Для американцев используйте en_US в качестве языка.
Для британцев используйте en_GB (не en_UK)
Для канадского использования en_CA
Похоже, что это значение может меняться в зависимости от конфигурации вашего сервера.
Других решений пока нет …