2017-05-23 4 views
3

Ich habe eine Funktion, die eine Zeichenfolge automatisch korrigiert. Es korrigiert falsch geschriebene Wörter wie erwartet. Dieses Problem, mit dem ich konfrontiert bin, ist, dass es ein amerikanisches buchstabiertes Wort nicht in sein britisches Äquivalent korrigiert.Konvertieren Sie amerikanische Wörter in britisches Äquivalent

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

Das obige Beispiel nicht erkennt einen Rechtschreibfehler. Wie kann ich es ändern color zu colour und das gleiche für Wörter wie favorite zu favourite?

+0

Es gibt einen interessanten Kommentar auf der [Documentation page] (http://php.net/manual/en/function.pspell-new.php) bezüglich der Verwendung von 'british',' en_GB' oder 'en_UK'. Es könnte sich lohnen, mit diesen zu experimentieren. – Tom

+1

@thebluefox vielen Dank. Das hat mir geholfen, das Problem zu beheben. Wenn Sie dies als Antwort angeben, werde ich es als korrekt markieren, um anderen zu helfen. – steve

+0

Fertig @Steve - froh, dass ich helfen konnte. – Tom

Antwort

1

Blick auf die offizielle Dokumentation für die pspell_new()-Methode - es gibt einen Kommentar zu unterschiedlichen Werten für den "Rechtschreib" -Parameter - mit dem eingestellt wird, welche Version einer Sprache verwendet wird;

Ich denke, die Sprache und die Rechtschreibung Parameter unterscheidet sich bei verschiedenen PHP-Versionen und/oder ASPELL/UNIX-Distributionen.

Mein PHP 5.2.6 Debian ignoriert den Rechtschreibparameter.

Statt:

Für die Amerikaner verwenden en_US als Sprache. Für britische Verwendung en_GB (nicht en_UK) Für kanadische Verwendung en_CA

Es sieht aus, als ob dieser Wert je nach Serverkonfiguration ändern könnte.

Verwandte Themen