(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Collator::setStrength -- collator_set_strength — Establecer la fuerza de comparación
Estilo orientado a objetos
Estilo procedimental
El servicio de comparación » ICU soporta numerosos niveles de comparación (llamados "Levels", pero también conocidos como "Strengths"). Con estas categorías, ICU puede ordenar los strings con precisión, según las convenciones locales. Sin embargo, al permitir el uso selectivo de los niveles, la búsqueda de un string en un texto puede realizarse bajo diferentes condiciones. Para más información, véase el capítulo collator_set_strength().
Nivel primario:
Típicamente, esto se utiliza para diferenciar caracteres base, como "a" < "b"). Esta es la diferencia más importante. Por ejemplo, los diccionarios se dividen en secciones con los caracteres base.
Esto también se conoce como el level 1
de fuerza.
Nivel secundario:
Los acentos en los caracteres se consideran diferencias secundarias. Por ejemplo, "as" < "às" < "at". Otras diferencias entre caracteres pueden considerarse secundarias, según el idioma. Una diferencia secundaria siempre se ignora cuando existe una diferencia primaria.
Esto también se conoce como el level 2
de fuerza.
Nota:
Nota: en algunos idiomas, como el danés, ciertos caracteres acentuados se consideran caracteres base. En la mayoría de los idiomas, un carácter acentuado es simplemente una diferencia secundaria con las versiones simples de la letra.
Nivel terciario:
Las mayúsculas y minúsculas se distinguen en el nivel terciario.
Por ejemplo, "ao" < "Ao" < "aò". Además, una variante de una letra es diferente de la forma base en el nivel ternario. Por ejemplo, "a" y "𝒶". Otro ejemplo de diferencia terciaria es el gran y pequeño Kana. Una diferencia terciaria se ignora cuando existe una diferencia primaria o secundaria.
Esto también se conoce como el level 3
de fuerza.
Nivel cuaternario:
Cuando la puntuación se ignora en los niveles 1-3, un nivel adicional puede utilizarse para distinguir palabras con o sin puntuación. Por ejemplo, "ab" < "a-b" < "aB". Esta diferencia se ignora cuando hay una diferencia de nivel primario, secundario o terciario.
Esto también se conoce como el level 4
de fuerza.
El nivel cuaternario solo debe utilizarse cuando se debe ignorar la puntuación o tratar texto japonés (procesamiento Hiragana).
Nivel idéntico:
Cuando todos los demás niveles son iguales, el nivel idéntico se utiliza para diferenciar caracteres. El punto de código Unicode en una forma NFD de cada carácter se compara a este nivel, en caso de que no haya diferencia en los niveles 1-4. Por ejemplo, las cantillaciones hebreas solo se distinguen en este nivel. Este nivel solo debe utilizarse con mucha parcimonia, ya que reduce significativamente el rendimiento.
Esto también se conoce como el level 5
de fuerza.
Por ejemplo, puede optarse por ignorar los acentos, las mayúsculas y minúsculas en un texto. Casi todos los caracteres se distinguen por los tres primeros niveles, y la mayoría de las configuraciones locales se detienen en el nivel tres. Sin embargo, si el atributo Alternate toma el valor Shifted, entonces el cuarto nivel se utiliza para diferenciar igualdades entre espacios, puntuación y símbolos, que de otro modo serían ignorados. Si se necesitan diferencias muy sutiles entre caracteres, puede utilizarse el nivel idéntico (por ejemplo, el nivel idéntico diferencia entre una A matemática pequeña y en negrita y una A matemática cursiva y pequeña). Sin embargo, el uso de estos niveles implica una degradación significativa del rendimiento al comparar y ordenar strings cercanos o iguales.
Retorna siempre true
.
Ejemplo #1 Ejemplo con collator_set_strength()
<?php
$arr = array( 'aò', 'Ao', 'ao' );
$coll = collator_create( 'en_US' );
// Ordenar un array con el nivel por defecto
collator_sort( $coll, $arr );
var_export( $arr );
// Ordenar un array con el nivel primario
collator_set_strength( $coll, Collator::PRIMARY );
collator_sort( $coll, $arr );
var_export( $arr );
?>
El ejemplo anterior mostrará :
array ( 0 => 'ao', 1 => 'Ao', 2 => 'aò', ) array ( 0 => 'aò', 1 => 'Ao', 2 => 'ao', )