php計算字元串相似度similar_text
- 2019 年 11 月 27 日
- 筆記
因為發送郵件要限制發送頻率,有一些郵件都是同類型的郵件,只是時間不一樣,這樣就需要判斷發送郵件內容的相似度。網上找了相關方法,發現這個 similar_text 是可以用的,而且很好用,不會有計算不準的情況。有時候不自己試試,真的很容易被網上的言論誤導。
similar_text計算字元串相似度
實際上 similar_text 接收3個參數,第3個參數是引用傳遞,表示相似百分比,函數是返回相似的位元組數,且看程式碼:
<?php // 計算文件相似度 // 兩個字元串相差 "技術" 和 "http://" $str1 = "快樂編程是一個通俗易懂的技術部落格www.01happy.com"; $str2 = "快樂編程是一個通俗易懂的部落格http://www.01happy.com"; echo similar_text($str1, $str2, $percent); // 輸出 57, 實際上就是相似字元串的長度: strlen("快樂編程是一個通俗易懂的") + strlen("部落格") + strlen("www.01happy.com") echo PHP_EOL; echo $percent; // 輸出 89.763779527559
levenshtein函數計算兩個字元串編輯距離
另外還有一個函數可以用來計算從字元串1轉化到字元串2需要的編輯距離,俗稱操作步數,且看程式碼:
<?php // 計算字元串1到字元串2的編輯距離 // 兩個字元串相差 "技術" 和 "http://" $str1 = "快樂編程是一個通俗易懂的技術部落格www.01happy.com"; $str2 = "快樂編程是一個通俗易懂的部落格http://www.01happy.com"; echo levenshtein($str1, $str2); // 輸出13, 實際上就是差異字元串的長度:strlen("技術") + strlen("http://")