3

我有一个自动更正字符串的功能。它按预期更正拼写错误的单词。我面临的这个问题是它不会将美国拼写的单词纠正为英国的对应词。

$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.'); 

上面的示例未检测到拼写错误。对于诸如to之类的词,我怎样才能让它变为color和相同?colourfavoritefavourite

4

1 回答 1

1

查看该pspell_new()方法的官方文档 - 有一条关于“拼写”参数的不同值的评论 - 用于设置使用的语言版本;

我认为语言和拼写参数在不同的 PHP 版本和/或 aspell/UNIX 发行版上有所不同。

我的 PHP 5.2.6 Debian 忽略了拼写参数。

反而:

对于美国人来说,使用 en_US 作为语言。英国使用 en_GB(不是 en_UK) 加拿大使用 en_CA

看起来这个值可能会根据您的服务器配置而改变。

于 2017-05-23T10:39:37.150 回答