将美国单词转换为英国单词

时间:2017-05-23 09:35:57

标签: php pspell

我有一个自动纠正字符串的函数。它可以按预期更正拼写错误的单词。我面临的这个问题是,它不能将美国拼写的单词改为英语等同词。

$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等字段也是如此?

1 个答案:

答案 0 :(得分:1)

查看pspell_new()方法的官方文档 - 有关于"拼写"的不同值的评论。参数 - 用于设置使用哪种语言版本;

  

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

     

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

     

相反:

     

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

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