Je me demande s'il existe une façon de faire une chaîne floue en PHP. Chercher un mot dans une longue chaîne, trouver une correspondance potentielle même si elle est mal orthographiée; quelque chose qui le trouverait s'il était éteint par un caractère en raison d'une erreur d'OCR.Recherche de texte floue: Générateur de recherche générique Regex?
Je pensais qu'un générateur de regex pourrait être capable de le faire. Donc, étant donné une entrée de « fou », il générerait cette regex:
.*((crazy)|(.+razy)|(c.+azy)|cr.+zy)|(cra.+y)|(craz.+)).*
Il retournerait alors tous les matches pour ce mot ou des variations de ce mot.
Comment construire le générateur: je ne serais probablement diviser la chaîne/mot de recherche vers le haut dans un tableau de caractères et de construire l'expression regex faire un foreach le tableau nouvellement créé en remplaçant la valeur de clé (la position de la lettre dans la chaîne) avec ". +".
Est-ce un bon moyen de faire de la recherche de texte flou ou existe-t-il un meilleur moyen? Qu'en est-il de la comparaison de chaînes qui me donne un score basé sur la proximité? J'essaie de voir si un texte OCR mal converti contient un mot en un mot.
Votre regex est faux - remplacer '+' 'avec .' – Amarghosh
merci pour la pointe, fixe la question avec + – mikeytown2
' c + azy' va correspondre 'calksjdazy' -' c' suivi d'un ou plusieurs caractères suivis de 'azy'. Pour un seul caractère, utilisez 'c.azy' – Amarghosh