CakeFest 2024: The Official CakePHP Conference

Collator::setStrength

collator_set_strength

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

Collator::setStrength -- collator_set_strengthSıralamanın seviyesini ayarlar

Açıklama

Nesne yönelimli kullanım

public Collator::setStrength(int $seviye): bool

Yordamsal kullanım

collator_set_strength(Collator $nesne, int $seviye): bool

» 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.

  1. 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.

  2. İ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.

  3. Üçü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.

  4. 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).

  5. 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.

Bağımsız Değişkenler

nesne

Collator nesnesi.

seviye

Atanacak seviye.

Olası değerler:

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Örnekler

Ö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',
)

Ayrıca Bakınız

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top