我正在试图弄清楚如何计算两个字符串中的差异是否正好是1个字符(或缺少它)
该功能应涵盖以下情况:
related_count('TABLE1',id)
STRIN1G / STRIN2G
ONE TOO THREE / ONE TWO THREE
NATALI / NATALIE
ASTRING / STRINGB
函数(在那里检查它是否返回1)将在所有情况下都有效,但它不会涵盖最后一种情况。
答案 0 :(得分:0)
此算法可能无法适用于所有情况,但符合您的示例,应该让您更接近您的最终目标。看看similar_text
,它比levenshtein
贵,但更灵活。在这里,我们只是根据字符串的不同长度进行调整,如果一个字符串是另一个字符串的完整子字符串。
$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)