2014-01-16 111 views
0

我想找到兩個文本PHP - 查找兩段文本之間的匹配詞的數量?

$str1=the cat is on the roof 
$str2=the mouse is on the roof 

之間的類似的詞數,就是對的,屋頂話是$ str1和$ str2的類似

因此輸出將是5號百分比86%

我嘗試了similar_text()函數,但是這個函數不能像我想要的那樣工作。

+4

嘿,代碼跑掉了,去拿吧,快點! –

+0

你是怎麼得到86%的?總共有12個字,有10個是匹配的,並且有83% - 額外的3%來自哪裏? – newfurniturey

+0

''similar_text'也提供了83%以及肯定看起來對我 – jszobody

回答

6

簡單,爆炸它們,然後使用和array_diff:

$totalWords = count($array_1); 

$array_1 = explode(" ", $str1); 
$array_2 = explode(" ", $str2); 
$differenceCount = count(array_diff($array_1, $array_2)); 

$differentPercent = $differenceCount/($totalWords/100); 

@Edit:

編輯上面的代碼來顯示百分比。但是請記住,如果數組1和數組2的字數不相同,您可能會得到錯誤的結果。

+0

thnx @Steini給予回答...可以檢查兩個字符串之間有多少百分比的字相似... – Me7888

+0

我試試編輯過的代碼....顯示操作數錯誤:錯誤不支持的操作數類型 Me7888

+0

我忘了一個;在代碼的最後,更新了它,但在提出這些問題之前,您應該瞭解一些關於編碼/錯誤處理的知識。這個網站是給解決方案提示,而不是完全工作的系統。 – Steini

3
$arr1 = explode(" ",$str1) 
$arr2 = explode(" ",$str2) 

$arr3 = array_diff($arr1, $arr2); 

echo(count($arr1)-count($arr3)); 
2

我會處理這個問題的方法是爆炸每個字符串,然後用array_diff給他們這樣的比較:

$arr1 = explode(' ', $str1); 
$arr2 = explode(' ', $str2); 
$diff = array_diff($arr1, $arr2); 
echo (count($arr1) - count($diff)); 

這將回聲出類似的單詞的數量。

+0

已經有2個幾乎相同的答案了,是真的很nesessary? – Steini

+1

@ steini當我輸入我的答案時,他們不在那裏,看着時間,真的很接近。我開始時沒有答案。 – Styphon

+0

好我刪除它,但仍然可以點擊刷新按鈕,然後發送帖子現有的帖子和你的之間有3分鐘... – Steini

0
$arr1 = explode(" ",$str1) 
$arr2 = explode(" ",$str2) 

$arr3 = array_diff($arr1, $arr2); 

我用array_intesect檢查多少匹配,, i的搜索 一個陣列到其他

以及用於與輔助的動詞和介詞(所述,於,是等) 防止使用該使用 -

$arr1 = str_replace(array("to", "the","a","an","in","by","but","are","is","had","have","has"),'',$arr1); 
相關問題