任何人都可以給我一個更好的方法(或者最優選的方法)來找到兩個字符串之間的匹配百分比(即這兩個字符串(例如名稱)與百分比之間的相關程度如何)使用模糊邏輯。任何人都可以幫我編寫代碼嗎?我真的想知道從哪裏開始..在php中查找兩個字符串之間的匹配百分比?
2
A
回答
6
$str1 = 'Hello';
$str2 = 'Hello, World!';
$percent;
similar_text($str1, $str2, $percentage);
4
我只是寫基於話,不是字符的字符串比較函數 - 這裏是,萬一有人需要它:
function wordsof($s) {
$a = [];foreach(explode(" ",$s)as $w) $a[$w]++;
return $a;
}
function compare($s1,$s2) {
$w1 = wordsof($s1);if(!$w1) return 0;
$w2 = wordsof($s2);if(!$w2) return 0;
$totalLength = strlen(join("",$w1).join("",$w2)) || 1;
$chDiff = 0;
foreach($w1 as $word=>$x) if(!$w2[$word]) $chDiff+=strlen($word);
foreach($w2 as $word=>$x) if(!$w1[$word]) $chDiff+=strlen($word);
return $chDiff/$totalLength;
}
邏輯很簡單:它在另一個方向上查找一個字符串的每個字。長詞重量更多。它提供了一個介於0和1之間的浮點值。您可能希望在比較之前對字符串進行規範化 - 空格修剪,多個空格替換爲一個,全部小寫等等。此外,它不是很快,但由於單詞查找的東西...
如果你不想污染全局命名空間,你可以在比較器中實現「wordsof」。它爲了可讀性而分開。代碼也有所簡化,所以在使用它之前先進行測試,但它應該完成這項工作。當我們說話時,我正在使用原始版本。
相關問題
- 1. 查找兩個字符串之間不匹配的字母
- 2. PHP:匹配兩個字符串之間的字符串
- 3. MySQL字符串匹配百分比
- 4. 兩個字符串之間的相關性百分比
- 5. 兩個字符串之間的百分比相似度
- 6. 比較兩個字符串以找到匹配的字符串
- 7. 想找出兩個字符串之間的相似百分比jquery
- 8. 計算字符串中匹配字的百分比
- 9. 在Lucene中計算匹配字符串百分比
- 10. 匹配字符串中兩個索引之間的子串
- 11. java兩個字符串之間的火花字符匹配
- 12. 匹配兩個相同字符之間的字符串
- 13. 刪除兩個字符串之間的匹配字符
- 14. 比較字符串和字符串列表中查找匹配
- 15. 查找匹配的部分字符串
- 16. vb.net查找兩個字符串之間的字符串
- 17. 查找兩個字符串之間的所有子字符串
- 18. 正則表達式來查找兩個字符串之間的匹配
- 19. 查找兩個字符串中匹配字的序列
- 20. 在PHP中檢查兩個字符串的近似匹配
- 21. 找到兩個字符串中的匹配字符串
- 22. 比較兩個字符串數組,分別返回匹配的字符串和不匹配的字符串
- 23. PhP查找(並替換)兩個不同字符串之間的字符串
- 24. 使用preg_match在字符串中查找百分比值
- 25. 兩個大字符串中的部分字符串匹配
- 26. 百分比匹配
- 27. 比較兩個字符串並找到多個匹配
- 28. 匹配PHP中常見字符之間的唯一字符串
- 29. 如何找到兩個「/」字符之間的字符串 - php
- 30. MySQL匹配包含char百分比的字符串
使用一些模糊邏輯?當然,這裏有一個:'$ matchPercentage =($ str1 == $ str2)? 100:0;'。說真的,你能詳細說明一下嗎? – netcoder
通過「更好」,我假設你已經看到了PHP自己的[similar_text()](http://www.php.net/similar_text)和[levenshtein()](http://www.php.net/levenshtein )? – user113215
我不知道..我只需要一個更好的方法來找到兩個名稱字符串之間的百分比匹配(我的意思是幾乎所有的比較)..雖然我GOOGLE了它,我不能斷定哪個選擇? sry ..如果我不清楚.. @netcoder – user1518659