2017-05-23 198 views
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.'); 

以上示例未檢測到拼寫錯誤。我怎樣才能得到它colorcolour和相同的單詞,如favoritefavourite

+0

在[Documentation page](http://php.net/manual/en/function.pspell-new.php)上有關於使用英國英國英格蘭英格蘭或英格蘭英格蘭的有趣評論。這可能值得嘗試。 – Tom

+1

@thebluefox非常感謝。這幫助我解決了這個問題。如果你把這個作爲答案,我會將其標記爲幫助他人是正確的。 – steve

+0

完成@Steve - 很高興我能幫到你。 – Tom

回答

1

查看pspell_new()方法的官方文檔 - 有關「拼寫」參數的不同值的說明 - 用於設置使用哪種版本的語言;

我認爲語言和拼寫參數在不同的PHP版本和/或aspell/UNIX發行版上有所不同。

我的PHP 5.2.6 Debian忽略拼寫參數。

相反:

對於美國人用EN_US的語言。 英國使用EN_GB(不en_UK) 對於加拿大使用en_CA

看起來好像這個值可以根據您的服務器配置更改。