array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.similar-text.php', 1 => 'similar_text', ), 'up' => array ( 0 => 'ref.strings.php', 1 => 'Функции для работы со строками', ), 'prev' => array ( 0 => 'function.sha1.php', 1 => 'sha1', ), 'next' => array ( 0 => 'function.soundex.php', 1 => 'soundex', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/strings/functions/similar-text.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
similar_text — Вычисляет степень похожести двух строк
Вычисляет степень похожести двух строк по алгоритму, описанному в 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 %)