我想比较两个字符串并返回比较级别。
字符串 1 是输入,可以采用来自客户端的多种格式。例如:
string 1 - "GCSE English Lang Year 10" or
string 1 - "Year 10 Eng Lang GCSE" etc
字符串 2 是我想要与之比较的字符串。例如:
string 2 - "English Language"
我意识到我可以使用preg_match
寻找精确的模式:
$subject = $inputString;
$pattern= "/Eng/";
if (preg_match($pattern, $inputString))
{
echo "match";
}
但是有没有一种方法可以返回匹配因素,而不是简单地是或否?我意识到使用以下代码可能会有更复杂的编码答案preg_match
type 方法,但我想知道是否有一些东西我还没有找到。
您可以使用levenshtein() http://php.net/manual/en/function.levenshtein.php功能:
编辑距离定义为将 str1 转换为 str2 所需替换、插入或删除的最小字符数。该算法的复杂度为O(m*n),其中n和m是str1和str2的长度(与similar_text()相比相当不错,为O(max(n,m)**3),但是还是很贵)。
例如,“英语语言”和“GCSE 英语语言 10 年级”的编辑距离为 12。
$lev = levenshtein('GCSE English Lang Year 10', 'English Language');
echo $lev; // 12
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)