分享两个PHP对字符串计算模糊匹配度的函数

寻技术 PHP编程 2023年07月11日 113

今天分享两个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.19jp.com";
    echo "匹配度1:".levenshtein($biaozhun,$string1,1,1,1)."<br>";
    echo "匹配度2:".levenshtein($biaozhun,$string2,1,1,1)."<br>";
?>

输出结果:

匹配度1:18
匹配度2:24

我个人感觉,这两个函数的应用也只能是参考,实际应用中要根据具体情况进行判断。

关闭

用微信“扫一扫”