我运行一个用户拥有用户名的网站。他们可以随时更改用户名。当他们更改名称时,我们会检查当前是否正在使用该名称,然后允许或不允许更改。在我们的网站上,人们经常喜欢改变他们的用户名来复制其他人(使他们的名字非常相似,混淆其他人的身份)。这对于我们运行的网站类型来说并不罕见。
是否可以使用简单查询轻松检查有些类似的用户名?
以下是我们希望查询匹配的用户名的一些示例。
testingman1 = testingman11
lionhead = Iionhead (one has an l and the other has a capital i)
sleepybears = sleeepybears
如果在同一位置使用相同字母的字符数进行字符计数,然后根据百分比确定它是否是另一个用户的副本?
我知道我很可能不得不编写一个自定义函数,但只是寻找一些关于如何使其成为无痛且不是非常系统繁琐过程的建议。
答案 0 :(得分:1)
您可以使用
levenshtein(str1, str2)
是两个字符串之间的距离。
在PHP中,如果一个字符串长度超过255个字符,则该函数将返回-1
更多信息:http://php.net/manual/en/function.levenshtein.php
或者如果你想要百分比,你可以使用similar_text ( string $first , string $second, [, float &$percent ] )
巫婆在第3个参数中传递相似度的百分比
更多信息:http://www.php.net/manual/en/function.similar-text.php