Travaillant sur un petit système de correction orthographique online, je me suis penché sur la réalisation d'une classe PHP qui permettrait d'obtenir toutes les combinaisons qu'il pourrait résulter d'une faute de frappe lors de l'encodage d'un mot au clavier. L'algorithme se base sur l'adjacence des touches du clavier (azerty et qwerty supportés) pour ne proposer que les fautes de frappe les plus probables dues à la maladresse humaine. Il est par exemple peu fréquent d'encoder un "s" alors qu'on vise un "k", ces deux touches étant complètement opposées.
<?php $clumsy = new ClumsyTyper(); print_r($clumsy->getMistypedString('sexy'')); ?>Va afficher :
Array ( [0] => zexy [1] => eexy [2] => qexy [3] => dexy [4] => wexy [5] => xexy [6] => szxy [7] => srxy [8] => ssxy [9] => sdxy [10] => sesy [11] => sedy [12] => sewy [13] => secy [14] => sext [15] => sexu [16] => sexg [17] => sexh )Bien évidemment, certains petits filous auront vite cerné l'utilité de cette classe dans d'autres domaines complètement machiavéliques tels que le typosquatting (ou URL hijacking), la génération massive de mots clés (Massive keyword list), et tout un tas de trucs avec des noms qui font très peur, à essayer avec prudence dans un but purement éducatif, bien entendu !