我正在尝试将pspell与aspell结合使用.
我已经这样安装了它:
sudo apt-get install libpspell-dev
sudo apt-get install php5-pspell
sudo apt-get install aspell-de
之后,这是一个示例代码:
$pspell_link = pspell_new("de");
var_dump(pspell_check($pspell_link, "Verkäuferin"));
if (!pspell_check($pspell_link, "Verkäuferin")) {
$vorschlaege = pspell_suggest($pspell_link, "verkäuferin");
foreach ($vorschlaege as $vorschlag) {
echo "Mögliche Schreibweise:" . $vorschlag . "<br>";
}
}
有两个问题:
>这个例子不懂德语变音符号
>对于实质内容,他们需要为大写,以便pspell_check返回true.当我用小写字母时,如何变为真实?例如,“Ball”将返回true,但“ball”将返回false.如何解决,对于“球”,支票也将返回真实状态?
解决方法:
尝试指定字符编码.我只需将第一行更改为:
$pspell_link = pspell_new("de", "", "", "utf-8");
另外:即使这允许“Verkäuferin”通过拼写检查,我的服务器也无法正确输出带有变音符号的字母,直到我将此行放入我的php.ini文件中.
default_charset = "utf-8"
有关使用PHP进行字符编码的更多信息,此页面看起来很有用:
至于你的第二个问题,虽然PHP使用的aspell包支持不区分大小写的匹配,但遗憾的是PHP不允许你选择该选项.这是我能提出的最佳解决方案:
$pspell_link = pspell_new("de", "", "", "utf-8");
$wort = "verkäuferin";
$richtig = pspell_check($pspell_link, $wort);
if (!$richtig) {
$vorschlaege = pspell_suggest($pspell_link, $wort);
// make a copy of the array with all words in lowercase, so we can still
// display the original suggestions if necessary
$kleinschrift_vorschlaege = array_map('strtolower', $vorschlaege);
// convert the original word to lowercase before comparing it
$richtig = in_array(strtolower($wort), $kleinschrift_vorschlaege);
}
echo "'$wort' ist " . ($richtig ? "" : "nicht") . " richtig buchstabiert.<br/>";
if (!$richtig) {
echo "Mögliche Schreibweisen:<br/>";
foreach ($vorschlaege as $vorschlag) {
echo " " . $vorschlag . "<br/>";
}
}