Signatur
Beschreibung
collator_set_attribute() erlaubt es, einzelne Sortierattribute eines Collator-Objekts gezielt zu konfigurieren. Damit lässt sich das Verhalten der Zeichenkettenvergleiche feingranular anpassen – zum Beispiel ob Groß-/Kleinschreibung, Akzente oder Sonderzeichen bei der Sortierung berücksichtigt werden sollen.
Die Funktion ist die prozedurale Variante der Methode Collator::setAttribute(). Sie arbeitet mit Konstanten aus der Collator-Klasse: Attribut-Konstanten (z. B. Collator::CASE_FIRST, Collator::STRENGTH) werden mit Wert-Konstanten (z. B. Collator::UPPER_FIRST, Collator::TERTIARY) kombiniert.
Typische Anwendungsfälle sind mehrsprachige Anwendungen, die Texte korrekt nach den lokalen Regeln sortieren müssen – etwa wenn Großbuchstaben vor Kleinbuchstaben erscheinen sollen oder Akzente ignoriert werden sollen.
Die Funktion gibt true zurück, wenn das Attribut erfolgreich gesetzt wurde, andernfalls false. Mit collator_get_error_code() oder collator_get_error_message() können Fehler näher untersucht werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | Collator | Ein Collator-Objekt, das mit collator_create() oder new Collator() erstellt wurde. |
|
| $attribute Pflicht | int | Das zu setzende Attribut. Muss eine der Collator-Attribut-Konstanten sein, z. B. Collator::CASE_FIRST, Collator::STRENGTH, Collator::ALTERNATE_HANDLING, Collator::NORMALIZATION_MODE oder Collator::FRENCH_COLLATION. |
|
| $value Pflicht | int | Der neue Wert für das Attribut. Muss eine passende Collator-Wert-Konstante sein, z. B. Collator::ON, Collator::OFF, Collator::UPPER_FIRST, Collator::LOWER_FIRST, Collator::PRIMARY, Collator::SECONDARY, Collator::TERTIARY oder Collator::QUATERNARY. |
Rückgabewert
true zurück, wenn das Attribut erfolgreich gesetzt wurde. Bei einem Fehler (z. B. ungültige Attribut- oder Wert-Konstante) wird false zurückgegeben.Beispiele
Großbuchstaben vor Kleinbuchstaben bei der Sortierung
<?php
// Collator für Deutsch erstellen
$collator = collator_create('de_DE');
// Großbuchstaben sollen zuerst sortiert werden
collator_set_attribute($collator, Collator::CASE_FIRST, Collator::UPPER_FIRST);
$woerter = ['apfel', 'Birne', 'ananas', 'Aprikose'];
collator_sort($collator, $woerter);
print_r($woerter);
Nur primäre Stärke – Akzente und Groß-/Kleinschreibung ignorieren
<?php
$collator = collator_create('fr_FR');
// Nur auf primäre Unterschiede (Basisbuchstaben) achten
$result = collator_set_attribute($collator, Collator::STRENGTH, Collator::PRIMARY);
if ($result === false) {
echo 'Fehler: ' . collator_get_error_message($collator);
} else {
// "cafe" und "café" gelten jetzt als gleich
$cmp = collator_compare($collator, 'cafe', 'café');
echo $cmp === 0 ? 'Gleich' : 'Unterschiedlich';
}
// Wichtig · Fallstricke
Wichtig: Nicht jede Kombination aus Attribut und Wert ist gültig. Wird eine ungültige Kombination übergeben, gibt die Funktion false zurück, ohne eine Exception zu werfen. Überprüfen Sie daher den Rückgabewert und nutzen Sie bei Bedarf collator_get_error_message() zur Fehleranalyse.
Die Funktion setzt Attribute auf Objekt-Ebene. Alle nachfolgenden Vergleichs- oder Sortieroperationen mit diesem Collator-Objekt werden entsprechend beeinflusst. Für OOP-Code empfiehlt sich die äquivalente Methode Collator::setAttribute().
Die Verfügbarkeit aller Attribute hängt von der installierten ICU-Bibliothek ab. Ältere ICU-Versionen unterstützen möglicherweise nicht alle Konstantenwerte.