如果您尝试执行类似于 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` 打开自定义字典,然后对于每个建议的单词,检查它们是否在字典中。如果建议的单词在自定义字典中,则在“您是不是想搜索”部分中使用它;否则,将其丢弃并尝试下一个。希望这对遇到此问题并试图获得更准确建议的任何人都有所帮助。