$a="дерево вода коля моркова"; $b="водоворот"; первая переменная это текст где нужно искать Вторая сам запрос функция должна вернуть наибольшое число совпадений. Например: дерево, в этом слове ищем запрос водовород, самое большое нахождение "во" ( да, в каком месте искать неважно (начало слова,средина или конец слова ), важно то чтобы оно сходилось с началом строки поиска, то есть "водоворот" нашел свое начало в слове "дерево" в корне "во", значит он нашел 2 слова, идем дальше, "Вода" тут уже "водоворот" пришлет значение 3, так как найдено 3 совпадение "Вод" ну в остальных словах уже нету ( кроме морковка, как там присутсвует буква "В" которая находится в нашем запросе.
Ничего сложного нет. 1. $a - преобразовать в массив слов 2. Посчитать кол-во символом в слове $b для п.4 3. foreach для массива $a 4. Увеличивая в цикле for длину подстроки из искомого слова, проверяем позицию первого вхождения. (Начальное значение счетчика = 1) 5. Как только === false, записываем в массив-результат: слово и (счетчик - 1) из for На выходе получаем массив слов и кол-во символов совпавших в каждом. Не забываем, что для кириллицы нужно использовать mb_* функции.
Задача ТС найти точное совпадение группы символов из одного слова в других словах. В то время, как similar_text вычисляет схожесть строк в общем да еще и с учетом длины каждой. Поэтому, из примера "морковка" даст больший процент схожести, чем "вода". А по Левенштейну - так тут вообще не та история, т.к. функция вычисляет кол-во преобразований, чтобы одна строка была максимально схожа со второй.