今天分享两个PHP中用于对字符串计算模糊匹配度的函数,感觉PHP还是很强大的,只是理想和现实还是有差距的。
similar_text() 函数 计算两个字符串的相似度。该函数也能计算两个字符串的百分比相似度。
<?php $biaozhun="毛票票 PHP 博客 技术博客"; $string1="PHP 技术学习"; $string2="毛票票 PHP在线 技术博客"; $nums=similar_text($biaozhun,$string1); echo "第1组匹配字符的数目: ".$nums."<br>";//计算的结果中空格也会计算在内 similar_text($biaozhun,$string1,$percent); echo "第1组字符串的相似度为: ".$percent." %<br>"; similar_text($biaozhun,$string2,$percent); echo "第2组字符串的相似度为: ".$percent." %<br>"; echo "-------------------------------------------------<br>"; ?>
输出结果:
第1组匹配字符的数目: 8 第1组字符串的相似度为: 42.105263157895 % 第2组字符串的相似度为: 72.340425531915 %
levenshtein() 函数 返回两个字符串之间的 Levenshtein 距离。
Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个字符串转换成另一个字符串所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
默认地,PHP 给每个操作(替换、插入和删除)相同的权重。然而,您可以通过设置可选的 insert、replace、delete 参数,来定义每个操作的成本。
Levenshtein值越低,越相近,限制255字符以内,否则返回-1
<?php $biaozhun="毛票票 PHP 博客 技术博客"; $string1="PHP博客 PHP在线"; $string2="毛票票 PHP在线 技术博客 www.maopiaopiao.com"; echo "匹配度1:".levenshtein($biaozhun,$string1,1,1,1)."<br>"; echo "匹配度2:".levenshtein($biaozhun,$string2,1,1,1)."<br>"; ?>
输出结果:
匹配度1:18 匹配度2:24
我个人感觉,这两个函数的应用也只能是参考,实际应用中要根据具体情况进行判断。