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

上記の例ではスペルミスが検出されません。 colorからcolourに変更するにはどうすればいいですか?favoriteからfavouriteなどの単語は同じですか?

+0

「英文」、「en_GB」または「en_UK」の使用については、[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

この値は、サーバーの構成に応じて変更される可能性があるかのように見えます。

関連する問題