检查PHP中两个字符串之间是否只有1个字符的区别

时间:2018-04-28 16:40:21

标签: php string difference

我正在试图弄清楚如何计算两个字符串中的差异是否正好是1个字符(或缺少它)

该功能应涵盖以下情况:

related_count('TABLE1',id)

STRIN1G / STRIN2G ONE TOO THREE / ONE TWO THREE NATALI / NATALIE ASTRING / STRINGB 函数(在那里检查它是否返回1)将在所有情况下都有效,但它不会涵盖最后一种情况。

1 个答案:

答案 0 :(得分:0)

此算法可能无法适用于所有情况,但符合您的示例,应该让您更接近您的最终目标。看看similar_text,它比levenshtein贵,但更灵活。在这里,我们只是根据字符串的不同长度进行调整,如果一个字符串是另一个字符串的完整子字符串。

演示:https://3v4l.org/IZ943

$strings = [
    'STRIN1G' => 'STRIN2G',
    'ONE TOO THREE' => 'ONE TWO THREE',
    'NATALI' => 'NATALIE',
    'ASTRING' => 'STRINGB',
];

foreach ($strings as $string => $variant) {
    $length = strlen($string);
    $adjustment = abs($length - strlen($variant));
    $matching = similar_text($string, $variant);
    var_dump($length - $matching + $adjustment);
}
int(1)
int(1)
int(1)
int(1)