似乎如果您尝试做类似于 Google 的“您要找的是不是”建议,并且选择 pspell_suggest() 函数提供的第一个单词,那么它将无法与自定义词典和替换一起良好地工作。例如,以下代码
<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/home/user/public_html/custom.pws");
pspell_config_repl($pspell_config, "/home/user/public_html/custom.repl");
$pspell_link = pspell_new_config($pspell_config);
$words = preg_split ("/\s+/", $query);
$ii = count($words);
global $spellchecked;
$spellchecked = "";
for($i=0;$i<$ii;$i++){
if (pspell_check($pspell_link, $words[$i]))
{
$spellchecked .= $words[$i]." ";
}
else
{
$erroneous = "yes";
$suggestions = pspell_suggest($pspell_link, $words[$i]);
$spellchecked .= $suggestions[0]." ";
}
}
if($erroneous == "yes")
{
echo "您要找的是不是: <i>".$spellchecked."?";
}
else
{
echo $spellchecked . " 是一个有效的单词/短语";
}
?>
这在大多数情况下都能正常工作,并在大多数输入中对插入拼写错误时给出您要找的是什么建议。但是,如果您指定自定义替换,然后搜索您指定的拼写错误的单词,那么如果它不是返回的第一个建议,它将不会在“您要找的是不是”最终结果中使用。您需要做的是使用 fopen 和 fread 打开自定义词典,然后对于每个建议的单词,检查它们是否在词典中。如果建议的单词在自定义词典中,那么在“您要找的是不是”部分中使用它,否则丢弃它并尝试下一个。希望这对遇到此问题的人有所帮助,他们试图获得更准确的建议。