(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Fournit des outils de comparaisons de chaînes, avec le support des conventions locales pour les tris.
Collator::FRENCH_COLLATION
Trie les chaînes avec différents accents, sur la fin de la chaîne. Cet attribut est automatiquement configuré à On pour les locales françaises, et quelques autres. Les utilisateurs n'ont pas besoin de configurer explicitement cet attribut. Il y a un coût de performances lors de la comparaison des chaînes quand cet attribut est à On, mais la taille des clés de tris est inchangée. Les valeurs possibles sont :
Collator::ON
Collator::OFF
(par défaut)Collator::DEFAULT_VALUE
Exemple #1 Règles de FRENCH_COLLATION
Collator::ALTERNATE_HANDLING
L'attribut alterné est utilisé pour contrôler la gestion des caractères variables de UCA : les espaces blancs, la ponctuation et les symboles. Si Alternate est configuré à NonIgnorable (N), alors les différences entre ces caractères sont de la même importance que les différences entre les lettres. Si Alternate est configuré à Shifted (S), alors ces caractères seront d'importance mineur. La valeur Shifted est souvent utilisée conjointement avec Quaternary qui vaut Strength. Dans ce cas, les espaces blancs, la ponctuation et les symboles sont considérés lors de la comparaison, mais uniquement si les autres aspects de la chaînes (lettres de base, accents et casse) sont tous identiques. Si Alternate n'est pas configuré à Shifted, il n'y a alors pas de différence entre une Strength de 3 et une Strength de 4. Pour plus d'information et d'exemples, voyez Variable_Weighting dans » UCA. La raison qui fait que les valeurs de Alternate ne sont pas seulement On et Off est que des valeurs supplémentaires pour Alternate pourraient être ajoutées à l'avenir. L'option UCA Blanked est exprimée avec une valeur de Strength à 3, et Alternate configuré à Shifted. La valeur par défaut pour la majorité des locales est NonIgnorable. Si Shifted est sélectionné, il peut être plus lent s'il y a de nombreuses chaînes qui sont identiques, sauf pour la ponctuation : la taille de la clé de tri sera inchangée, à mois que le niveau de Strength ne soit élevé.
Les valeurs possibles sont :
Exemple #2 Règles ALTERNATE_HANDLING
Collator::CASE_FIRST
L'attribut Case_First est utilisé pour contrôler le fait que les majuscules
doivent être considérées comme avant les minuscules, et vice-versa, en
l'absence d'autres discriminant. Les valeurs possibles sont
Uppercase_First
(U) et Lowercase_First
(L), plus les valeurs standards Default
et Off.
Il n'y a presque pas de différence entre Off et Lowercase_First
en termes de résultats, ce qui fait que les utilisateurs typiques
n'utiliseront pas Lowercase_First : uniquement Off ou Uppercase_First.
(ceux qui sont intéressés par les différences entre X et L devront
consulter la section Collation Customization
).
Spécifier L ou U ne va pas changer les performances de comparaison,
mais va affecter la taille de la clé de tri.
Les valeurs possibles sont :
Collator::OFF
(par défaut)Collator::LOWER_FIRST
Collator::UPPER_FIRST
Collator:DEFAULT
Exemple #3 Règles CASE_FIRST
Collator::CASE_LEVEL
L'attribut Case_Level est utilisé pour ignorer les accents, mais pas la casse. Dans ces situations, mettez l'attribut Strength à Primary, et Case_Level à On. Dans la plupart des locales, cet attribut est à Off par défaut. Il y a un petit coût de performances pour la comparaison des chaînes, un un impact sur la taille des index de tri si cet attribut est à On.
Les valeurs possibles sont :
Collator::OFF
(par défaut)Collator::ON
Collator::DEFAULT_VALUE
Exemple #4 Règles CASE_LEVEL
Collator::NORMALIZATION_MODE
L'attribut Normalization détermine s'il faut normaliser totalement le texte ou non, pour la comparaison. Même si cet attribut à Off (ce qui set le cas par défaut pour de nombreuses locales), les textes comparés pour un usage ordinaire seront corrects (pour des détails, voyez UTN #5). Il n'y aura un problème que si les marques d'accent ne sont pas canoniques. Si cet attribut est à On, alors les meilleurs résultats sont garantis pour tous les textes. Il y a un coût de comparaison moyen si cet attribut vaut On, en fonction de la fréquence des séquences qui requièrent de la normalisation. Il n'y a pas d'effet significatif sur la taille des index de tri. Si le texte est réputé dans les formes de normalisation NFD ou NFKD, il n'y a pas besoin d'activer l'option de Normalization.
Les valeurs possibles sont :
Collator::OFF
(par défaut)Collator::ON
Collator::DEFAULT_VALUE
Collator::STRENGTH
Le service de collation ICU supporte de nombreux niveaux de comparaison (appelés "Levels", mais aussi connus sous le nom de "Strengths"). Avec ces catégories, ICU peut trier les chaînes avec précision, en fonction des conventions locales. Cependant, en permettant l'utilisation sélective des niveaux, la recherche d'une chaîne dans un texte peut être réalisées, à partir de différentes conditions. Pour plus d'informations, voyez le chapitre collator_set_strength().
Les valeurs possibles sont :
Collator::HIRAGANA_QUATERNARY_MODE
La compatibilité avec JIS x 4061 requiert l'introduction d'un niveau supplémentaire pour distinguer les caractères Hiragana et Katakana. Si la compatibilité avec le standard est nécessaire, alors cet attribut doit être utilisé à On, et la Strength doit prendre la valeur de Quaternary. Cela va affecter la taille des index de tri, et les performances de comparaisons des chaînes.
Les valeurs possibles sont :
Collator::OFF
(par défaut)Collator::ON
Collator::DEFAULT_VALUE
Collator::NUMERIC_COLLATION
Lorsqu'activé, cet attribut génère une clé de collation pour les valeurs numériques de sous-chaînes. C'est une méthode pour que '100' soit trié après '2'.
Les valeurs possibles sont :
Collator::OFF
(par défaut)Collator::ON
Collator::DEFAULT_VALUE
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