similar_text

(PHP 4, PHP 5, PHP 7)

similar_textВычисляет степень похожести двух строк

Описание

similar_text ( string $string1 , string $string2 , float &$percent = null ) : int

Вычисляет степень похожести двух строк по алгоритму, описанному в Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1). Эта реализация алгоритма не использует стека, использованного в оригинале, вместо этого применяются рекурсивные вызовы, что в некоторых случаях может ускорить процесс. Следует отметить, что сложность алгоритма составляет O(N**3), где N - длина более длинной из двух строк.

Список параметров

string1

Первая строка.

string2

Вторая строка.

Замечание:

Изменение порядка string1 и string2 может привести к другому результату; см, пример ниже.

percent

При передаче по ссылке третьего аргумента, similar_text() присваивает ему степень похожести двух строк в процентах, деля результат similar_text() на среднее число длин заданных строк 100 раз.

Возвращаемые значения

Возвращается количество совпадающих символов в двух строках.

Количество совпадающих символов вычисляется путем нахождения самой длинной первой общей подстроки, а затем делает это для префиксов и суффиксов рекурсивно. Добавляются длины всех найденных общих подстрок.

Примеры

Пример #1 Пример использования similar_text() с заменой аргументов

В этом примере показано, что изменение порядка аргументов string1 и string2 может дать разные результаты.

<?php
$sim 
similar_text('bafoobar''barfoo'$perc);
echo 
"сходство: $sim ($perc %)\n";
$sim similar_text('barfoo''bafoobar'$perc);
echo 
"сходство: $sim ($perc %)\n";

Результатом выполнения данного примера будет что-то подобное:

сходство: 5 (71.428571428571 %)
сходство: 3 (42.857142857143 %)

Смотрите также

  • levenshtein() - Вычисляет расстояние Левенштейна между двумя строками
  • soundex() - Возвращает ключ soundex для строки