1

我正在编写一个函数 php,它必须执行以下操作:

  • 我们有两个字符串,例如:“ Bienvenue ”和“ Bienbenue

  • 这两个字符串与 php 函数 strpos 不匹配。

  • 但通常,我的函数的基本功能是说,是的,两个字符串之间只有一个字母不同,所以我返回 true。但是我需要一些帮助来找到存在的算法或 php 函数?

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

  • 只有“ien”与模式匹配,我必须查看匹配了多少个字母,然后将这个数字与单词/模式的大小进行比较。

  • 所以我们有 9 / 3 = 3; 这个比例不好,所以我返回 false。

    但在这个例子中:“ interactivity ”和“ intevatizity ”,我们有匹配的“ inte ”“ acti ”和“ ity ”。所以我们有 13 个字母中有 11 个是正确的。所以管理信件的错误并不容易......

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

4

2 回答 2

4

您可以使用内置函数similar_text来完成此操作。确保你也检查了一些“怪癖”的笔记。

根据您的评论,您可能想要使用类似这样的东西,它获取最长的公共子字符串,然后将其除以字符串长度并给它一个返回 true 或 false 的阈值

于 2012-04-20T18:00:55.353 回答
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;
}
于 2012-04-20T18:06:30.967 回答