2009-11-04 86 views
0

我正在尋找寫腳本的幫助來檢查短語/單詞列表並將它們彼此比較,並查看哪一個是正確鍵入的短語/單詞。PHP - 哪個單詞輸入正確?

$arr1 = array('fbook', 'yahoo msngr', 'text me later', 'how r u'); 
$arr2 = array('facebook', 'yahoo messenger', 'txt me l8r', 'how are you'); 

因此,在比較每個數組中的每個索引時,應該通過每個數組並比較兩個值。最後,它應該會產生:

facebook 
yahoo messenger 
text me later 
how are you 

任何幫助,我明白了!

回答

0

您需要在處理這些單詞時定義一些規則。以你爲例,你需要一個正則表達式,並且你需要長度更長的關鍵字,但是可能有更長的長度可能不起作用。

1

如果輸入是相當簡單的,你有安裝pspell和數組的大小相同:

對於兩個數組中每個索引,你可以explode對空間的字符串,pspell_check每個單詞和短語其中pspell_check返回爲真的詞的百分比最高將是保留的短語。

示例代碼讓你開始:

function percentage_of_good_words($phrase) { 
    $words = explode(" ", $phrase); 
    $num_good = 0; 
    $num_total = count($words); 

    if ($num_total == 0) return 0; 

    for ($words as $word) { 
    if (pspell_check($word)) { 
     $num_good++; 
    } 
    } 

    return ($num_good/$num_total) * 100; 
} 

$length = count($arr1); 
$kept = array(); 
for ($i = 0; i < $length; $i++) { 
    $percent_from_arr1 = percentage_of_good_words($arr1[$i]); 
    $percent_from_arr2 = percentage_of_good_words($arr2[$i]); 
    $kept[$i] = $percent_from_arr1 > $percent_from_arr2 ? $arr1[$i] : $arr2[$i]; 
} 
0

如果你有,你知道一個數組是正確的,將是很容易做到的東西,如:

foreach ($correct_array as $word => $num){ 
    if ($word == $tested_array[$num]) 
     {echo "this is correct: " . $word . "<br />";} 
    else{ 
     echo "this is incorrectly spelled: " . $tested_array[$num] . "<br />"; 
    } 

} 
+0

我不認爲他有一個數組,他知道是正確的,或者至少,這不是問題所讀的方式。 – 2009-11-04 22:56:50

0

如果所有你需要做的爲確保它的拼寫正確,你可以用in_array,像這樣:

foreach ($arr2 as $val){ 
    if(in_array($val,$arr1){ 
    //spelled properly 
    } 
    else{ 
    //spelled incorrectly 
    } 

} 

,如果你想實際自動更正它們,它可能需要一個非常複雜的算法,並將每個可能的拼寫錯誤存儲在某個數據庫中。

+0

我不認爲「$ arr1」或「$ arr2」是「參考」拼寫。 – 2009-11-04 22:56:00

1

沒有辦法「猜測」哪種方法是正確的,你必須有一個知識庫(即字典)。

這個詞典可以用pspell(aspell)作爲@Dominic提到的來實現,或者你可以將自己的數組作爲字典。

如果您有數組作爲字典,可以使用Levenshtein算法that is available as a function in php來計算兩個單詞(即:您的單詞和參考單詞)之間的距離。因此,您可以迭代參考數組以找到與您正在查找的數據之間的差異最小的單詞,這些可能是提示作爲更正的最佳選項。如果距離爲0,那麼被檢查的單詞已經是正確的。