Функция сравнения двух строк на PHP

Насколько похожи две строки? В PHP для выяснения подобия строк есть две функции — similar_text() и levenshtein().

Первая из них считает процент совпадения символов в двух строках, а вторая вычисляет расстояние Левенштейна — кол-во операций вставки, замены, удаления символов, приводящих одну строку к другой.

Время работы функции levenshtein очень быстро растет с ростом длины сравниваемых строк (как n³). Также установлена максимальная длина для строк — 255 символов. После вычисления требуется нормировка, чтобы можно было использовать результат вычислений для сравнения с другими результатами. А если вы переставите аргументы местами, то получите отличный от предыдущего результат.

Все эти факторы склоняют меня в сторону выбора функции similar_text. Она устроена более сложно, чем я упоминал ранее.

Пример работы:

А вот результаты сравнения других строк:

ac и ca — 50%;

AC и ac — 0%

aac и ac — 80%

abc и ac — 80%

caa и ac — 40%

cba и ac — 40%

vb ac и ac vb — 40%

vb ac и vc ab — 60%

Как видите, не так уж она прямолинейна и предсказуема. Для функции важен порядок слов и регистр букв. По умолчанию, она не работает с кириллицей и UTF8.

Давайте избавим функцию от этих недостатков.

Получившаяся функция strSimilar пренебрегает регистром букв, порядком слов и работает с UTF-8. Для этого требуется предварительная нормализация строк.

Алгоритм очень медленный и едва ли применим для реальных задач, где требуется выявить подобие строк.

Написать комментарий

Мало букафф? Читайте есчо !

Определить город по IP адресу

Май 4, 2017 г.

Писал ранее об API ipinfo.io. Сервис позволяет вытащить как гео координаты, так и названия города, региона, страны. Единственный недостаток - информация на английском языке. В данной статье рассмотрим пару примеров использования сервиса. Обращение ...

Читать

Конвертируем в PDF

Сентябрь 3, 2013 г.

Есть несколько задач, связанных с конвертацией документов в PDF. Меня интересует перевод из HTML и создание PDF средствами PHP. Конвертировать страницу, отображенную в браузере в PDF. Здесь обычно используют плагины. Это работает до тех пор, пока ...

Читать

 

Комментарии к «Функция сравнения двух строк на PHP»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: