在之前的文章《PHP字符串學(xué)習(xí)之比較兩個字符串》中,我們介紹了3種比較兩個字符串的方法,感興趣的可以看看。下面這篇文章我們來聊聊在PHP中計算兩個字符串匹配度(相似度)的方法,有需要的可以參考參考。
計算兩個字符串匹配度(相似度),也就是計算兩個字符串的匹配字符的數(shù)目;PHP中內(nèi)置了一個函數(shù)可以實現(xiàn)各個功能,那就是similar_text()函數(shù),下面我們來介紹一下這個函數(shù)。
首先我們來看一個小例子。
<?php header("Content-type:text/html;charset=utf-8"); $str1="Hello php!"; $str2="Hello java!"; echo "字符串 “'$str1'” 和字符串 “'$str2'” 的相似度為: ".similar_text($str1,$str2); ?>
看這個代碼,你們覺得這個結(jié)果會是什么?我們來分析一下:在兩個字符串中有7個相同的字符:“Hello”、空格、“!”。
那么兩個字符串的相似度應(yīng)該為“7”,對不對?我們來看一下答案。
是的,沒錯。similar_text()函數(shù)統(tǒng)計了字符串$str1
和$str2
中匹配字符的數(shù)目,并返回匹配字符數(shù)目。
那我們具體看看這個函數(shù)吧。
similar_text() 函數(shù)計算兩個字符串的相似度,返回匹配字符數(shù)目(數(shù)字形式);也能以百分比的形式返回兩個字符串的相似度。
看看它的語法格式:
similar_text($string1,$string2,[$percent])
可以看出,similar_text() 函數(shù)接受3個參數(shù):2個必需參數(shù)$string1
和$string2
,1個可省略的參數(shù)$percent
。通過上面的例子,2個必需參數(shù)我們知道它們的意思,下面來聊聊可省略的參數(shù)$percent
。
參數(shù)$percent
是用于指定供存儲百分比相似度的變量名。similar_text() 函數(shù)設(shè)置了該參數(shù),就可以能以百分比的形式返回兩個字符串的相似度。
下面通過代碼示例來看看參數(shù)$percent
的用法。
<?php header("Content-type:text/html;charset=utf-8"); $str1="Hello php!"; $str2="Hello java!"; similar_text($str1,$str2,$percent); echo "字符串 “'$str1'” 和字符串 “'$str2'” 的相似度為: ".$percent; ?>
輸出結(jié)果:
利用similar_text()函數(shù),可以用來做模糊搜索的功能,或者其他需要模糊匹配的功能。但因為對漢字的處理規(guī)則不同,similar_text() 函數(shù)對中文計算不是很不準(zhǔn)確。
好了就說到這里了,有其他想知道的,可以點擊這個哦?!?→php視頻教程
最后給大家推薦閱讀一個經(jīng)典課程《PHP字符串處理(玉女心經(jīng)版)》,免費的~快來學(xué)習(xí)啊!