(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
Collator::setStrength -- collator_set_strength — Sıralamanın seviyesini ayarlar
Nesne yönelimli kullanım
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 level 1
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 level 2
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. Buna ayrıca
level 3
nitelik adı verilir.
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,
level 4
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 Unicode 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,
level 5
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.
nesne
Collator nesnesi.
seviye
Atanacak seviye.
Olası değerler:
Ö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', )