如果您嘗試執行類似於 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 打開自訂字典,然後針對每個建議的單字,檢查它們是否在字典中。 如果建議的單字在自訂字典中,則在「你是指」的部分使用它,如果不是,則捨棄它並嘗試下一個。 希望這可以幫助任何遇到這個問題並試圖獲得更準確建議的人。