diff --git a/reference/intl/grapheme/grapheme-levenshtein.xml b/reference/intl/grapheme/grapheme-levenshtein.xml new file mode 100644 index 000000000..327caf840 --- /dev/null +++ b/reference/intl/grapheme/grapheme-levenshtein.xml @@ -0,0 +1,215 @@ + + + + + + grapheme_levenshtein + Вычисляет расстояние Левенштейна между двумя строками в графемных кластерах + + + &reftitle.description; + &style.procedural; + + intfalsegrapheme_levenshtein + stringstring1 + stringstring2 + intinsertion_cost1 + intreplacement_cost1 + intdeletion_cost1 + stringlocale"" + + + Расстояние Левенштейна определяется как минимум графемных кластеров, + которые требуется заменить, вставить или удалить, чтобы преобразовать строку + string1 в строку string2. + Сложность алгоритма — O(m*n), где n + и m — длины строк string1 + и string2 в графемных кластерах. + + + В отличие от функции levenshtein, которая работает с байтами, + функция считает графемные кластеры Юникода, + поэтому составную и разложенную формы одного и того же символа, + например U+00E9 и U+0065 U+0301, + каждая из которых представляет символ é, + функция считает эквивалентными, а расстояние между формами — нулевым. + + + Алгоритм подстроится и выберет самые дешёвые преобразования, + если значения параметров insertion_cost, + replacement_cost или deletion_cost + не равны 1. + Например, при истинности выражения $insertion_cost + $deletion_cost < $replacement_cost + вместо замен выполняются вставки и удаления. + + + + + &reftitle.parameters; + + + + string1 + + + Строка в кодировке UTF-8 для вычисления расстояния Левенштейна. + + + + + string2 + + + Строка в кодировке UTF-8 для вычисления расстояния Левенштейна. + + + + + insertion_cost + + + Стоимость вставки — значение больше 0. + + + + + replacement_cost + + + Стоимость замены — значение больше 0. + + + + + deletion_cost + + + Стоимость удаления — значение больше 0. + + + + + locale + + &intl.param.grapheme.locale; + + + + + + + + &reftitle.returnvalues; + + Функция возвращает расстояние Левенштейна между двумя строками в графемных + кластерах или &false;, если возникла ошибка. Подробности об ошибке возвращает + функция intl_get_error_message. + + + + + &reftitle.errors; + + Функция выбрасывает ошибку ValueError, + если значение параметра insertion_cost, + replacement_cost или deletion_cost + меньше или равно 0. + + + Функция возвращает &false; и устанавливает ошибку модуля Intl, + если хотя бы одна входная строка не соответствует кодировке UTF-8, + в параметр locale передали недопустимый идентификатор локали + или возникла внутренняя ошибка библиотеки ICU. + + + + + &reftitle.changelog; + + + + + &Version; + &Description; + + + + + 8.5.0 + + Функцию добавили в модуль. + + + + + + + + + &reftitle.examples; + + Пример вычисления расстояния Левенштейна функцией <function>grapheme_levenshtein</function> + + + + &example.outputs; + + + + + + + + &reftitle.seealso; + + + levenshtein + grapheme_strlen + grapheme_substr + similar_text + + + Сегментация текста в Юникоде: Границы графемных кластеров + + + + + + +