Collator sınıfı

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

Giriş

Yerele duyarlı sıralama desteğiyle dizge karşılaştırma yeteneği sağlar.

Sınıf Sözdizimi

Collator {
/* Yöntemler */
__construct ( string $yerel )
asort ( array &$dizi [, int $sıralama_türü ] ) : bool
compare ( string $dizge1 , string $dizge2 ) : int
static create ( string $yerel ) : Collator
getAttribute ( int $öznitelik ) : int
getErrorCode ( void ) : int
getErrorMessage ( void ) : string
getLocale ([ int $tür ] ) : string
public getSortKey ( string $str ) : string
getStrength ( void ) : int
setAttribute ( int $öznitelik , int $değer ) : bool
setStrength ( int $nitelik ) : bool
sortWithSortKeys ( array &$dizi ) : bool
sort ( array &$arr [, int $sıralama_türü ] ) : bool
}

Öntanımlı Sabitler

Collator::FRENCH_COLLATION (integer)

Dizgenin geri planındaki farklı aksanlara göre dizgeleri sıralar. Bu öznitelik Fransızca yerellerde ve bir kaç başka yerelde özdevinimli olarak etkindir. Kullanıcılar normalde bu özniteliği açıkça etkinleştirme ihtiyacı duymazlar. Bu özniteliğe On değeri atamanın başarım açısından bir bedeli vardır fakat sıralama anahtarının uzunluğu tesirsizdir. Olası değerler şunlardır:

  • Collator::ON
  • Collator::OFF(öntanımlı)
  • Collator::DEFAULT_VALUE

Örnek 1 - FRENCH_COLLATION kuralları

  • F=OFF cote < coté < côte < côté
  • F=ON cote < côte < coté < côté

Collator::ALTERNATE_HANDLING (integer)

Alternate özniteliği, UCA'da değişken karakterler denen karakterleri (boşluk karakterleri, noktalama imleri ve simgeler) denetim altında tutmak için kullanılır. Eğer bu özniteliğe NonIgnorable (N) değeri atanırsa bu karakterler arasındaki farklar harfler arasındaki farklarla aynı önemdedir. Eğer Shifted (S) atanırsa bu karakterler çok düşük önemde olurlar. Shifted değeri çoğunlukla Strength (etki seviyesi) ile birlikte Dördüncüllüğü (Quaternary) belirtmekte kullanılır. Böyle bir durumda, boşluk karakterleri, noktalama imleri ve simgelerin dizgeleri karşılaştırırken hesaba katılabilmesi için dizgelerin tüm diğer şeyler (temel harfler, aksanlar ve harf büyüklüğü) bakımından eşdeğer olmaları gerekir. Eğer özniteliğe Shifted atanmazsa üçüncül (Tertiary) ve dördüncül (Quaternary) etki seviyeleri arasında hiçbir fark yoktur. Daha fazla bilgi ve örnekler için » UCA sitesindeki "Variable_Weighting" konusuna bakınız. Özniteliğin değerlerinin basitçe On ve Off olmamasının sebebi gelecekte başka değerlerin eklenebilecek olmasıdır. UCA seçeneği Blanked üçüncül etki seviyesi ile ifade edilir ve özniteliğe Shifted atanır. Çoğu yerel için NonIgnorable öntanımlıdır. Eğer Shifted seçilirse ve noktalama dışında birbirinin aynı çok sayıda dizge varsa işlem daha yavaş olabilir; etki seviyesi ayrıca arttırılmadıkça sıralama anahtarı uzunluğu tesirsiz olacaktır.

Olası değerler:

  • Collator::NON_IGNORABLE(öntanımlı)
  • Collator::SHIFTED
  • Collator::DEFAULT_VALUE

Örnek 2 - ALTERNATE_HANDLING kuralları

  • S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA
  • S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA
  • S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA

Collator::CASE_FIRST (integer)

Case_First özniteliği, dizgeler arasında başka farkların olmadığı durumda büyük harflerin küçük harflerden önce mi yoksa sonra mı olacağını belirler. Olası değerler, büyük harflerin önce geleceğini belirten Uppercase_First (U), küçük harflerin önce olacağını belirten Lowercase_First (L) değerlerine ilaveten standart Default ve Off değerleridir. Sonuçları bakımından Off ve Lowercase_First arasında hemen hemen hiç fark yoktur. Bu bakımdan kullanıcılar genelde Lowercase_First kullanmazlar, sadece Off veya Uppercase_First kullanırlar. X ve L arasındaki farkların ayrıntıları ile ilgilenen kullanıcılar Karşılaştırma Özelleştirmesini incelemelidirler. L veya U belirtmenin dizge karşılaştırma başarımında etkisi olmaz, fakat sıralama anahtarı uzunluğunu etkiler.

Olası değerler:

  • Collator::OFF(öntanımlı)
  • Collator::LOWER_FIRST
  • Collator::UPPER_FIRST
  • Collator:DEFAULT

Örnek 3 - CASE_FIRST kuralları

  • C=X or C=L "china" < "China" < "denmark" < "Denmark"
  • C=U "China" < "china" < "Denmark" < "denmark"

Collator::CASE_LEVEL (integer)

Case_Level özniteliği harf büyüklüğünü değil aksanları yoksaymak için kullanılır. Böyle bir durumda, etki seviyesine (Strength) Primary ve Case_Level özniteliğine On atanır. Çoğu yerelde On öntanımlıdır ve bu değerin küçük bir dizge karşılaştırma başarımı ve sıralama anahtarı ektisi vardır.

Olası değerler:

  • Collator::OFF(öntanımlı)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Örnek 4 - CASE_LEVEL kuralları

  • S=1, E=X role = Role = rôle
  • S=1, E=O role = rôle < Role

Collator::NORMALIZATION_MODE (integer)

Normalleştirme ayarı, karşılaştırmada metnin tamamen normalleştirilip normalleştirilmeyeceğini belirler. Değeri off olsa bile (çoğu yerel için öntanımlıdır) ortak kullanımda gösterildiği haliyle metin doğru olarak karşılaştırılacaktır (Ayrıntılar için UTN #5'e bakınız). Sadece, meşru sırada olmayan aksan imleri sorun çıkarır. Özniteliğe On atanmışsa, olası tüm metin girdiler için en iyi sonuçlar garanti edilir ve normalleştirme gerektiren dizilimlerin sıklığına bağlı olarak orta seviyede bir dizge karşılaştırma başarımı maliyeti vardır. Sıralama anahtarı uzunluğu üzerinde önemli bir etkisi yoktur. Eğer girdi metninin NFD veya NFKD normalleştirme şekillerinden birinde olduğu biliniyorsa bu normalleştirme seçeneğini etkin kılmaya gerek yoktur.

Olası değerler:

  • Collator::OFF(öntanımlı)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::STRENGTH (integer)

ICU Karşılaştırma hizmeti çok seviyeli karşılaştırmayı destekler (bunlara seviye (level) dendiği gibi tesir derecesi de (Strength) denir). Bu seviyeler sayesinde ICU, dizgeleri yerel uzlaşımlara bağlı olarak hassas bir şekilde sıralar. Bununla birlikte, metin içinde dizge araması, seviyelerin seçilerek devreye sokulmasına izin verilerek çeşitli eşleşme koşullarıyla gerçekleştirilebilir. Daha ayrıntılı bilgi edinmek için collator_set_strength() işlevine bakınız.

Olası değerler:

  • Collator::PRIMARY
  • Collator::SECONDARY
  • Collator::TERTIARY(öntanımlı)
  • Collator::QUATERNARY
  • Collator::IDENTICAL
  • Collator::DEFAULT_VALUE

Collator::HIRAGANA_QUATERNARY_MODE (integer)

JIS x 4061 ile uyumluluk Hiragana ve Katakana karakterler arasında ayrım sağlayacak ek seviyeler gerektirir. Eğer standartla uyumluluk gerekirse bu özniteliğe On atanmalı ve seviye olarak Quaternary (dördüncül) kullanılmalıdır. Bu, sıralama anahtarı uzunluğunu ve dizge karşılaştırma başarımını etkiler.

Olası değerler:

  • Collator::OFF(öntanımlı)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::NUMERIC_COLLATION (integer)

Etkin kılınırsa bu öznitelik, rakamlardan oluşan altdizgelerin sayısal değerleri için bir karşılaştırma anahtarı üretir. Bu, sıralamada '2''den sonra '100' almanın bir yoludur.

Olası değerler:

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::DEFAULT_VALUE (integer)
Collator::PRIMARY (integer)
Collator::SECONDARY (integer)
Collator::TERTIARY (integer)
Collator::DEFAULT_STRENGTH (integer)
Collator::QUATERNARY (integer)
Collator::IDENTICAL (integer)
Collator::OFF (integer)
Collator::ON (integer)
Collator::SHIFTED (integer)
Collator::NON_IGNORABLE (integer)
Collator::LOWER_FIRST (integer)
Collator::UPPER_FIRST (integer)

İçindekiler