PHP 8.4.2 Released!

Collator::setStrength

collator_set_strength

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::setStrength -- collator_set_strengthУстанавливает силу сопоставления

Описание

Объектно-ориентированный стиль

public Collator::setStrength(int $strength): true

Процедурный стиль

collator_set_strength(Collator $object, int $strength): true

Служба сопоставления в наборе библиотек » ICU поддерживает ряд уровней сравнения строк. Эти уровни называются «Уровнями», но их также называют «Силой сравнения». По этим категориям ICU сортирует строки точно в соответствии с местными соглашениями. Однако за счёт выборочной установки уровней искать строки в тексте можно с разными условиями сопоставления.

  1. Первичный уровень: Обычно обозначает различия между базовыми символами, например: "a" < "b". Это самый сильный уровень различия. Например, словари разбивают на разделы по базовым символам. Этот уровень ещё называется силой level 1.

  2. Вторичный уровень: Акценты в символах считают вторичными различиями, например: "as" < "às" < "at". Другие отличия между буквами тоже считают вторичными в зависимости от языка. Вторичное различие игнорируется, если строка содержит первичные различия. Этот уровень ещё называется силой level 2.

    Замечание:

    Примечание: Отдельные языки, например датский, считают часть букв с диакритическими знаками отдельными базовыми символами. Однако в большей части языков буква с акцентом содержит лишь второстепенное отличие от версии этой буквы без ударения.

  3. Третичный уровень: Различия в верхнем и нижнем регистре символов относятся к третичному уровню, например: "ao" < "Ao" < "aò". Кроме того, вариант буквы отличается от базовой формы на третичном уровне, например: "a" и "𝒶". Другой пример — разница между большой и маленькой Кана. Третичное различие игнорируется, если строки содержат первичное или вторичное различие. Этот уровень ещё называется силой level 3.

  4. Четвертичный уровень: Когда пунктуация игнорируется (смотрите раздел Ignoring Punctuation («Игнорирование знаков препинания») в документации ICU) на уровнях 1-3, различия устанавливаются на дополнительном уровне, чтобы различить слова с пунктуацией и без неё, например: "ab" < "a-b" < "aB". Эта разница игнорируется, если строки содержат первичное, вторичное или третичное различие. Этот уровень ещё называется силой level 4. Строки сравнивают на четвертичном уровне, только если требуется игнорирование знаков препинания или при обработке японского текста (смотрите раздел Hiragana Processing («Обработка хираганы») в документации ICU).

  5. Идентичный уровень: Решающий уровень сравнения строк, которые равны на остальных уровнях. Значения кодовых точек Unicode формы NFD (англ. Normalization Form D — форма нормализации D) каждой строки сравниваются на этом уровне, только если нет разницы на уровнях 1-4. Например, кантиляционные знаки иврита различаются только на этом уровне. На этом уровне строки сравнивают с осторожностью, поскольку разница только в значениях кодовых точек между двумя строками — предельно редкое явление. Сравнение строк на этом уровне заметно снижает производительность как для инкрементного сравнения, так и для генерации ключа сортировки, и увеличивает длину ключа сортировки. Этот уровень ещё называется силой level 5.

Приведём пример. Иногда при поиске текста пользователи игнорируют акценты или акценты и регистр. Бо́льшая часть символов различается по первым трём уровням, поэтому в большей части языков значение по умолчанию — третичный уровень сравнения. Однако, если для параметра «Альтернативный» задали значение «Shifted», то разницу на четвертичном уровне устанавливают, чтобы найти различия между пробелами, пунктуацией и символами, которые иначе функция проигнорировала бы. Символы сравнивают на Идентичном уровне, когда требуется обнаружить тонкие различия между символами наподобие математической полужирной строчной буквой A и математической курсивной строчной буквой A. Однако сравнение на уровнях выше третичного значительно увеличивает длину ключей сортировки и снижает производительность сравнения равных строк.

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

object

Объект Collator.

strength

Strength to set.

Допустимые значения:

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

Функция возвращает логическое значение true.

Примеры

Пример #1 Пример установки силы сопоставления функцией collator_set_strength()

<?php

$arr
= array('aò', 'Ao', 'ao');
$coll = collator_create('en_US');

// Сортировка массива с силой по умолчанию
collator_sort($coll, $arr);
var_export($arr);

// Сортировка массива с первичной силой
collator_set_strength($coll, Collator::PRIMARY);
collator_sort($coll, $arr);
var_export($arr);

?>

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

array (
  0 => 'ao',
  1 => 'Ao',
  2 => 'aò',
)
array (
  0 => 'aò',
  1 => 'Ao',
  2 => 'ao',
)

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

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top