(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
Collator::setStrength -- collator_set_strength — Sıralamanın seviyesini ayarlar
Nesne yönelimli kullanım
$nitelik
)Yordamsal kullanım
» ICU Karşılaştırma Hizmeti çok seviyeli karşılaştırmayı destekler. Bu sınıflandırma sayesinde ICU dizgeleri sıralamayı yerel uzlaşımlara uygun olarak daha büyük hassasiyetle yerine getirir. Bununla birlikte, seviyelerin seçmeli olarak devreye sokulabilmesi sayesinde metin içinde bir dizgenin aranması çeşitli eşleşme koşullarıyla yapılabilir.
Birincil seviye: Bu genel olarak, temel karakterler arasındaki farkları ("a" < "b" gibi) ifade etmek için kullanılır. Bu en güçlü farktır. Örneğin sözlükler bu temel karakterlere göre farklı bölümlere ayrılırlar. Buna ayrıca 1. seviyeden nitelik adı verilir.
İkincil seviye: Karakterlerdeki aksanlar ikincil farklar olarak ele alınır (örneğin, "as" < "às" < "at") Dile bağlı olarak harfler arasındaki diğer farklar da ikincil farklar olarak ele alınabilir. Dizgelerin içinde herhangi bir yerde birincil dereceden bir farkın varlığında ikincil seviyeden bir fark yoksayılır. Buna ayrıca 2. seviyeden nitelik adı verilir.
Bilginize:
Bazı dillerde (Danca gibi) bazı aksanlı karakterler temel karakterler olarak ele alınırlar. Bununla birlikte çoğu dilde aksanlı bir karakter aynı harfin aksansız olanına göre ikinci dereceden bir farktan başka bir şey değildir.
Üçüncül seviye: Büyük ve küçük harfler arasındaki farklar üçüncül seviyeden farklardandır (örneğin, "ao" < "Ao" < "aò"). Buna ek olarak, bir harfin büyük veya küçük harflisinin temel karakterlerden farkları da ("A" ve " " gibi) üçüncül seviyedendir. Bu farklara diğer bir örnek de büyük ve küçük Kana arasındaki farktır. Dizgelerin içinde herhangi bir yerde bir birincil veya ikincil seviyeden farkın varlığında üçüncül seviyeden bir fark yoksayılır.
Dördüncül seviye: 13. seviyede, noktalama yoksayıldığında (Noktalamanın Yoksayılması'na bakınız), noktalamalı ve noktalamasız sözcükleri ayırmakta ek bir seviye kullanılabilir (örneğin, "ab" < "a-b" < "aB"). Bu fark, birinci, ikincil veya üçüncül seviyeden farkların varlığında yoksayılır. Bu, 4. seviyeden nitelik olarak da bilinir. Dördüncül seviye sadece, noktalamanın yok sayılması gerekliyse veya bir Japonca metin işleniyorsa kullanılmalıdır (Hiragana işlemi'ne bakınız).
Eş seviye: Diğer tüm seviyelerin eşitliğinde eşitliği bozmak için eş seviye kullanılır. NFD biçimindeki her dizgenin Evrenkod kod değerleri, 14. seviyede fark bulunmayan durumda, bu seviyede karşılaştırılır. Örneğin İbranice şive imleri sadece bu seviyede ayrımsanır. Bu seviye gereksiz yere kullanılmamalı, iki dizge arasındaki sadece kod değerleri arasındaki farklar gibi oldukça nadir durumlarda kullanılmalıdır. Bu seviyenin kullanımı, esasen, hem arttırımlı karşılaştırma hem de sıralama anahtarı üretiminde (sıralama anahtarı uzunluğunu arttırması gibi) başarımı azaltır. Bu, 5. seviyeden nitelik olarak da bilinir.
Örneğin, bazıları, metin içinde arama yaparken aksanlı karakterleri veya aksanlı karakterleri ve büyük/küçük harf farklarını yoksaymayı seçebilirler. Hemen hemen tüm karakterler ilk üç seviyeye göre ayrımsanabilir ve bu bakımdan çoğu yerelde üçüncül (Tertiary) seviye öntanımlıdır. Bununla birlikte, Alternate özniteliğine Shifted atanırsa, boşluk ve noktalama karakterleri ve simgeler diğer taraftan yoksayılmadıkça bunlar arasındaki eşitlikleri bozmak için dördüncül (Quaternary) seviye kullanılabilir. Karakterler arasında çok hassas ayrım gerekliyse, eş (Identical) seviye de kullanılabilir. (Örneğin, Matematiksel Kalın Küçük A ile Matematiksel Eğik Küçük A arasındaki ayrımı sadece eş seviye sağlayabilir.) Bununla birlikte, üçüncül ve eş seviyelerden daha yüksek seviyelerin kullanımı belirgin şekilde daha uzun sıralama anahtarları ve eş dizgeler arasında daha yavaş karşılaştırma başarımı ile sonuçlanır.
coll
Collator nesnesi.
seviye
Atanacak seviye.
Olası değerler:
Collator::PRIMARY
Collator::SECONDARY
Collator::TERTIARY
Collator::QUATERNARY
Collator::IDENTICAL
Collator::DEFAULT
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Örnek 1 - collator_set_strength() örneği
<?php
$arr = array( 'aò', 'Ao', 'ao' );
$coll = collator_create( 'en_US' );
// Diziyi öntanımlı seviyeyle sıralayalım.
collator_sort( $coll, $arr );
var_export( $arr );
// Diziyi birincil seviyeyle sıralayalım.
collator_set_strength( $coll, Collator::PRIMARY );
collator_sort( $coll, $arr );
var_export( $arr );
?>
Yukarıdaki örneğin çıktısı:
array ( 0 => 'ao', 1 => 'Ao', 2 => 'aò', ) array ( 0 => 'aò', 1 => 'Ao', 2 => 'ao', )