levenshtein()函數(shù)用于計(jì)算兩個(gè)字符串之間的編輯距離。
int levenshtein ( string $str1 , string $str2 )
用于計(jì)算兩個(gè)字符串之間的編輯距離。
編輯距離,是指兩個(gè)字串之間,通過替換、插入、刪除等操作將字符串str1轉(zhuǎn)換成str2所需要操作的最少字符數(shù)量。 該算法的復(fù)雜度是 O(m*n),其中 n 和 m 分別是str1 和str2的長(zhǎng)度 (當(dāng)和算法復(fù)雜度為O(max(n,m)**3)的similar_text()相比時(shí),此函數(shù)還是相當(dāng)不錯(cuò)的,盡管仍然很耗時(shí)。)。
在最簡(jiǎn)單的形式中,該函數(shù)只以兩個(gè)字符串作為參數(shù),并計(jì)算通過插入、替換和刪除等操作將str1轉(zhuǎn)換成str2所需要的操作次數(shù)。
第二種變體將采用三個(gè)額外的參數(shù)來定義插入、替換和刪除操作的次數(shù)。此變體比第一種更加通用和適應(yīng),但效率不高。
它返回兩個(gè)參數(shù)字符串之間的 levenshtein 距離,否則返回-1
序號(hào) | 參數(shù)和說明 |
---|---|
1 | str1 求編輯距離中的其中一個(gè)字符串 |
2 | str2 求編輯距離中的另一個(gè)字符串 |
3 | cost_ins 定義插入次數(shù) |
4 | cost_del 定義替換次數(shù) |
試試下面的實(shí)例,計(jì)算兩個(gè)字符串之間的 Levenshtein 距離:
<?php //計(jì)算兩個(gè)字符串之間的編輯距離 echo 'the distance between two strings is '; echo levenshtein("Hello World","ello World"); ?>測(cè)試看看?/?
輸出結(jié)果-
the distance between two strings is 1