2013-07-31 6 views
1

Je cours un site Web où les utilisateurs ont un nom d'utilisateur. Ils peuvent changer leurs noms d'utilisateur quand ils le veulent. Quand ils changent leur nom, nous vérifions que ce nom n'est pas utilisé actuellement, puis autorisons ou non le changement. Sur notre site, les gens aiment souvent changer leur nom d'utilisateur pour copier d'autres personnes (rendre leur nom très semblable à confondre d'autres personnes de leur identité). Ce n'est pas rare pour le type de site que nous gérons.MySql Php Trouver des valeurs similaires

Est-ce moyen de vérifier facilement les noms d'utilisateur qui sont quelque peu similaires en utilisant une simple requête?

Voici quelques exemples de noms d'utilisateur que nous aimerions voir correspondre à une requête.

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

Toute façon de faire un caractère par nombre de caractères des mêmes lettres dans la même position et déterminer, en fonction du pourcentage si elle est une copie d'un autre utilisateur?

Je sais que je vais probablement devoir écrire une fonction personnalisée, mais je cherche juste quelques conseils sur la façon de le rendre aussi indolore et pas très processus de taxage du système.

+2

Essayez: http: // fr .wikipedia.org/wiki/Levenshtein_distance –

+0

Merci beaucoup! Je ne savais pas qu'une telle chose existait! Je vais forcer l'implémentation de la version php (http://php.net/manual/fr/function.levenshtein.php). Pas un grand fan de la création de fonctions dans MySQL. – user2027231

+0

juste faire attention. vous pouvez vous retrouver avec des faux positifs, par ex. deux noms légitimement différents qui ne diffèrent que par un caractère, comme tommi et tammi. –

Répondre

1

Vous pouvez utiliser

+0

Chargement de toutes les données en PHP pour le comparer? Pas très efficace. Il y a plusieurs implémentations de levenstein pour MySQL, par ex. https://github.com/MartinZottmann/mysql-levenshtein Je pense qu'il existe d'autres fonctions pour la comparaison de chaînes. – symcbean

Questions connexes