php解析字符串,看看它们是否类似

时间:2012-04-20 17:53:39

标签: php string parsing function matching

我正在写一个函数php,它必须做这样的事情:

  • 我们有两个字符串,例如:“ Bienvenue ”和“ Bienbenue
  • 这两个字符串与php函数strpos不匹配。
  • 但通常情况下,我的函数的基本组合就是说,是的,两个字符串之间只有一个字母不同,所以我返回true。但是我需要一些帮助才能找到存在的算法或php函数?

  • 在此示例中:“ Bienvenue ”和“ Vienlpntw

  • 只有“ien”与模式匹配,我必须看到有多少个字母匹配,然后将这个数字与单词/模式的大小进行比较。
  • 所以我们有9/3 = 3;这个比例不好,所以我回复假。

    但在此示例中:“ interactiveity ”和“ intevactizity ”,我们有“ inte ”“ acti “和” ity “ 哪些是匹配的。所以我们有13个字母中有11个是纠正的。 所以管理字母错误并不容易......

对于简历,我正在寻找一个php函数,可以告诉我条目是否与我的模式匹配,返回true或false尊重这些点。

2 个答案:

答案 0 :(得分:4)

您可以使用内置函数similar_text来完成此操作。请务必查看notes以及一些“怪癖”。

根据您的评论,您可能希望使用类似this的内容,它获取最长的公共子字符串,然后将其除以字符串长度并为其提供返回true或false的阈值

答案 1 :(得分:1)

这是一个非常简单的例子

function precisionMatch($string1, $string2, $precision = 0.6666666) {

    $matchCount = 0;
    $string1Length = strlen($string1);
    $string2Length = strlen($string2);
    for($i = 0; $i < $string1Length; $i++) {

        if ($i < $string2Length && $string1[$i] == $string2[$i]) {

            $matchCount++;
        }
    }

    return $matchCount / ($string1Length == 0 ? 1 : $string1Length) > $precision;
}