Устанавливает силу сопоставления

# 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 function Collator::setStrength(int `$strength`): true

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

function 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.

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

  - `Collator::PRIMARY`

  - `Collator::SECONDARY`

  - `Collator::TERTIARY`

  - `Collator::QUATERNARY`

  - `Collator::IDENTICAL`

  - `Collator::DEFAULT_STRENGTH`

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

Функция возвращает логическое значение `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',
    )

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

- Константы класса Collator
- collator_get_strength() - Получает текущую силу сопоставления

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open