(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Fornece capacidade de comparação de strings com suporte ao ordenamento apropriado de acordo com a localidade.
Collator::FRENCH_COLLATION
Ordena strings com diferentes acentuações a partir do final da string. Este atributo é automaticamente definido para ON (ligado) para as localidades francesas e algumas outras. Usuários normalmente não precisam definir explicitamente este atributo. Há um custo de desempenho de comparação de strings quando definida para ON, mas o comprimento da chave de ordenação não é afetado. Os valores possíveis são:
Exemplo #1 Regras da FRENCH_COLLATION
Collator::ALTERNATE_HANDLING
O atributo alternativo é usado para controlar o gerenciamento dos chamados caracteres variáveis na UCA: espaços em branco, pontuações e símbolos. Se ALTERNATE_HANDLING (A) for definido para NON_IGNORABLE (N), as diferenças entre estes caracteres são da mesma importância que as diferenças entre letras. Se ALTERNATE_HANDLING for definida para SHIFTED (S), estes caracteres são somente de importância menor. O valor SHIFTED é frequentemente usado em combinação com STRENGTH definida para set to QUATERNARY. Neste caso, espaços em branco, pontuações e símbolos são considerados ao comparar strings, mas somente se todos os outros aspectos das strings (letras base, acentos e forma) forem idênticos. Se ALTERNATE_HANDLING não for definida para SHIFTED, não haverá diferença entre uma STRENGTH de 3 e uma STRENGTH de 4. Para mais informações e exemplos, consulte "Variable_Weighting" na » UCA. A razão pela qual os valores para ALTERNATE_HANDLING não são simplesmente ON (ligado) e OFF (desligado) é que valores adicionais podem ser necessários no futuro. A opção BLANKED da UCA é expressa com STRENGTH de 3, e ALTERNATE_HANDLING definida para SHIFTED. O padrão para a maioria das localidades é NON_IGNORABLE. Se SHIFTED for selecionado, pode ser mais lento se houver muitas strings que são as mesmas exceto pela pontuação; o comprimento da chave de ordenação não será afetado a menos que o nível de STRENGHT seja também aumentado.
Os valores possíveis são:
Exemplo #2 Regras de ALTERNATE_HANDLING
Collator::CASE_FIRST
O atributo CASE_FIRST é usado para controlar se letras maiúsculas
vêm antes de letras minúsculas ou vice-versa, na ausência de outras
diferenças nas strings. Os valores possíveis são
UPPER_FIRST (maiúsculas primeiro - U)
e LOWER_FIRST (minúsculas primeiro - L),
mais o DEFAULT (padrão)
e OFF (desligado - X).
Quase não há diferença entre as opções OFF e LOWER_FIRST
em termos de resultados, portanto tipicamente os usuários não usarão
LOWER_FIRST: apenas OFF ou UPPER_FIRST. (Os interessados nas
diferenças detalhadas entre X e L devem consultar a Collation
Customization
- Customização de Agrupamento). Especificar L ou U não afetará o desempenho de
comparação de strings, mas afetará o comprimento da chave de ordenação.
Os valores possíveis são:
Collator::OFF
(padrão)Collator::LOWER_FIRST
Collator::UPPER_FIRST
Collator:DEFAULT
Exemplo #3 Regras de CASE_FIRST
Collator::CASE_LEVEL
O atributo CASE_LEVEL é usado quando os acentos são ignorados mas as maiúsculas/minúsculas não são. Nesta situação, deve-se definir STRENGTH para PRIMARY, e CASE_LEVEL para ON. Na maioria das localidades, esta configuração é OFF por padrão. Existe um pequeno impacto no desempenho de comparação de strings e na chave de ordenação se este atributo for definido para ON.
Os valores possíveis são:
Exemplo #4 Regras de CASE_LEVEL
Collator::NORMALIZATION_MODE
A configuração NORMALIZATION_MODE determina se o texto está completamente normalizado ou não na comparação. Mesmo se a configuração esteja em OFF (que é o padrão para muitas localidades), texto como representado em uso comum irá comparar corretamente (para detalhes, consulte UTN #5). Somente se as marcas de acentos estiverem em ordem não canônica haverá problema. Se a configuração estiver em ON, os melhores resultados são garantidos para todas as entradas de texto possíveis. Existe um custo médio de desempenho na comparação de strings se este atributo estiver em ON, dependendo da frequência de sequências que requerem normalização. Não há efeito significativo no comprimento da chave de ordenação. Se for sabido que o texto de entrada está nas formas de normalização NFD ou NFKD, não há necessidade de habilitar esta opção de normalização.
Os valores possíveis são:
Collator::STRENGTH
O Serviço de Agrupamento ICU suporta vários níveis de comparação, chamados também de "Strengths" (forças). Ter estas categorias possibilita à ICU ordenar as strings de forma precisa conforme as convenções locais. Entretanto, ao permitir que os níveis sejam seletivamente empregados, a pesquisa por uma string no texto pode ser realizada com várias condições de correspondência. Para informações mais detalhadas, consulte o capítulo collator_set_strength().
Os valores possíveis são:
Collator::HIRAGANA_QUATERNARY_MODE
Compatibilidade com JIS x 4061 requer a introdução de um nível adicional para distinguir caracteres Hiragana e Katakana. Se for requerida compatibilidade com o esse padrão, este atributo deve ser definido para ON, e a STRENGTH deve ser definida para QUATERNARY. Isto afetará o comprimento da chave de ordenação e desempenho de comparação de strings.
Os valores possíveis são:
Collator::NUMERIC_COLLATION
Quando definido para ON, este atributo gera uma chave de agrupamento para o valor numérico de substrings de dígitos. Esta é uma maneira de obter '100' ordenado DEPOIS de '2'.
Os valores possíveis são:
Collator::DEFAULT_VALUE
Collator::PRIMARY
Collator::SECONDARY
Collator::TERTIARY
Collator::DEFAULT_STRENGTH
Collator::QUATERNARY
Collator::IDENTICAL
Collator::OFF
Collator::ON
Collator::SHIFTED
Collator::NON_IGNORABLE
Collator::LOWER_FIRST
Collator::UPPER_FIRST
Collator::SORT_REGULAR
Collator::SORT_STRING
Collator::SORT_NUMERIC