我正在编写一个函数php,它必须做这样的事情:
-
我们有两个字符串,例如:"Bienvenue"和"Bienbenue"
-
这两个字符串与 PHP 函数 strpos 不匹配。
-
但通常情况下,我的函数的基本特征是说,是的,好的,两个字符串之间只有一个字母不同,所以我返回 true。但是我需要一些帮助来查找存在的算法或 php 函数?
-
在此示例中:"Bienvenue"和"Vienlpntw"
只有与模式 匹配的"ien",我必须查看匹配了多少个字母,然后,将此数字与单词/模式的大小进行比较。
所以我们有 9/3 = 3;这个比率很糟糕,所以我返回 false。
但是在这个例子中:"交互性"和"内在性",我们有"inte"acti"和"ity"。哪些是匹配的。所以我们有 13 个字母中的 11 个是正确的。所以管理字母错误并不容易...
对于简历,我正在寻找一个 php 函数,它可以告诉我一个条目是否可以与我的模式匹配,返回 true 或 false 尊重这些点。
您可以使用
内置函数,similar_text来完成此操作。确保你也查看笔记,了解一些"怪癖"。
根据您的注释,您可能希望使用这样的东西,它获得最长的公共子字符串,然后将其除以字符串长度并为其提供一个返回 true 或 false 的阈值
这里有一个非常简单的例子
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;
}