2013-07-31 43 views
1

我运行一个网站,用户有一个用户名。他们可以随时更改他们的用户名。当他们更改他们的名字时,我们检查该名称当前未被使用,然后允许或不允许更改。在我们的网站上,人们经常喜欢更改他们的用户名以复制其他人(使他们的名字非常相似,以混淆其他人的身份)。这对于我们运行的网站类型来说并不罕见。MySql Php查找类似的值

是否可以轻松检查使用简单查询有点类似的用户名?

以下是我们希望查询匹配的用户名的一些示例。

testingman1 = testingman11 
lionhead = Iionhead (one has an l and the other has a capital i) 
sleepybears = sleeepybears 

没有办法做到由同一字母的字符数的字符在同一位置,然后决定根据百分比,如果它是另一个用户的副本?

我知道我很可能不得不编写一个自定义函数,但只是寻求一些建议,如何使它成为无痛的,而不是非常系统的税收过程。

+2

尝试:HTTP:// EN .wikipedia.org/wiki/Levenshtein_distance –

+0

非常感谢!我不知道这样的事情存在!我会撬实施它的PHP版本(http://php.net/manual/en/function.levenshtein.php)。不喜欢在MySql中创建函数。 – user2027231

+0

只是要小心。您最终可能会有误报,例如两个合法的不同名字,只有一个字符不同,如tommi和tammi。 –

回答

1

您可以使用

+0

将所有数据加载到PHP中进行比较?效率不高。有几种MySQL的levenstein实现,例如https://github.com/MartinZottmann/mysql-levenshtein我期望还有其他的字符串比较函数。 – symcbean