PHP Conference Nagoya 2025

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): bool

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

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

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

  1. Первичный уровень: Обычно используется для обозначения различий между основными символами (например, «a» < «b»). Это самая большая разница. Например, словари разбиты на разные разделы по основному символу. Также называется силой level 1.

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

    Замечание:

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

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

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

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

Например, люди могут игнорировать акценты или игнорировать акценты и регистр при поиске текста. Почти все символы различаются по первым трём уровням, поэтому в большинстве языков значение по умолчанию - третичный. Однако, если для параметра «Альтернативный» задано значение «Shifted», то четвертичную силу можно использовать для разрыва связей между пробелами, пунктуацией и символами, которые в противном случае были бы проигнорированы. Если требуются очень тонкие различия между символами, тогда можно использовать Идентичный уровень (например, Идентичный уровень различает Mathematical Bold Small A и the Mathematical Italic Small A.). Однако использование уровней выше, чем третичный, идентичная сила приводит к значительно более длинным ключам сортировки и снижению производительности сравнения строк для равных строк.

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

object

Объект Collator.

strength

Strength to set.

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

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

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #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