Мне интересно, есть ли какой-нибудь способ сделать нечеткое сопоставление строк в PHP. Поиск слова в длинной строке, поиск потенциального соответствия, даже если оно неправильно написано; что-то, что могло бы найти его, если оно было отключено на один символ из-за ошибки OCR.
Я думал, что генератор регулярных выражений мог бы сделать это. Таким образом, с учетом ввода «сумасшедший» будет генерировать это регулярное выражение:
.*((crazy)|(.+razy)|(c.+azy)|cr.+zy)|(cra.+y)|(craz.+)).*
Затем будут возвращены все совпадения для этого слова или варианты этого слова.
Как построить генератор:
Вероятно, я бы разбил строку / слово поиска на массив символов и построил бы выражение регулярного выражения, выполнив foreach для вновь созданного массива, заменив значение ключа (положение буквы в строке) на «. +».
Это хороший способ сделать нечеткий текстовый поиск или есть лучший способ? Как насчет сравнения строк, которое дает мне оценку, основанную на том, насколько близко это? Я пытаюсь проверить, содержит ли какой-нибудь плохо преобразованный текст OCR короткое слово.