Signatur
Beschreibung
collator_get_attribute() ist die prozedurale Variante von Collator::getAttribute() und gehört zur ICU-basierten Internationalisierungserweiterung (Intl). Sie ermöglicht es, den aktuell gesetzten Wert eines bestimmten Collation-Attributs abzufragen, das das Sortier- und Vergleichsverhalten des Collators steuert.
Typische Attribute sind z. B. Collator::CASE_FIRST (Groß-/Kleinschreibung zuerst), Collator::STRENGTH (Vergleichsstärke) oder Collator::NORMALIZATION_MODE. Diese Einstellungen beeinflussen, wie Zeichenketten miteinander verglichen und sortiert werden – etwa ob Akzente, Groß-/Kleinschreibung oder Unicode-Normalisierung berücksichtigt werden.
Die Funktion eignet sich besonders dann, wenn man den aktuellen Zustand eines Collators prüfen möchte, bevor man ihn ändert, oder wenn man sicherstellen will, dass bestimmte Attribute korrekt gesetzt wurden. Sie ist nützlich beim Debuggen von länderspezifischem Sortierverhalten.
Verfügbare Attributkonstanten sind u. a. Collator::FRENCH_COLLATION, Collator::ALTERNATE_HANDLING, Collator::CASE_FIRST, Collator::CASE_LEVEL, Collator::NORMALIZATION_MODE, Collator::STRENGTH, Collator::HIRAGANA_QUATERNARY_MODE und Collator::NUMERIC_COLLATION.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | Collator | Das Collator-Objekt, dessen Attribut abgefragt werden soll. Es wird typischerweise mit collator_create() oder new Collator() erzeugt. |
|
| $attribute Pflicht | int | Das abzufragende Attribut als ganzzahlige Konstante, z. B. Collator::STRENGTH, Collator::CASE_FIRST oder Collator::NUMERIC_COLLATION. |
Rückgabewert
int zurück (z. B. eine der Konstanten wie Collator::ON, Collator::OFF oder Collator::PRIMARY). Im Fehlerfall (ungültiges Attribut oder interner ICU-Fehler) wird false zurückgegeben.Beispiele
Aktuellen STRENGTH-Wert eines Collators abfragen
<?php
$collator = collator_create('de_DE');
$strength = collator_get_attribute($collator, Collator::STRENGTH);
switch ($strength) {
case Collator::PRIMARY:
echo "Strength: PRIMARY (nur Basiszeichen)";
break;
case Collator::SECONDARY:
echo "Strength: SECONDARY (+ Akzente)";
break;
case Collator::TERTIARY:
echo "Strength: TERTIARY (+ Groß-/Kleinschreibung)";
break;
case Collator::QUATERNARY:
echo "Strength: QUATERNARY";
break;
case Collator::IDENTICAL:
echo "Strength: IDENTICAL";
break;
default:
echo "Strength: Unbekannt ($strength)";
}
Attribut prüfen und ggf. setzen
<?php
$collator = collator_create('de_DE');
// Prüfen, ob numerische Sortierung aktiv ist
$numericCollation = collator_get_attribute($collator, Collator::NUMERIC_COLLATION);
if ($numericCollation !== Collator::ON) {
// Numerische Sortierung aktivieren (damit "file10" nach "file9" kommt)
collator_set_attribute($collator, Collator::NUMERIC_COLLATION, Collator::ON);
echo "Numerische Sortierung wurde aktiviert.\n";
} else {
echo "Numerische Sortierung ist bereits aktiv.\n";
}
$items = ['file10', 'file2', 'file1', 'file20'];
collator_sort($collator, $items);
print_r($items);
// Wichtig · Fallstricke
Fehlerbehandlung: Wenn false zurückgegeben wird, kann der Fehlercode mit collator_get_error_code() und die Fehlermeldung mit collator_get_error_message() abgefragt werden.
OOP-Variante: Die prozedurale Funktion collator_get_attribute($collator, $attr) ist äquivalent zur Methode $collator->getAttribute($attr). Beide Varianten liefern identische Ergebnisse.
Verfügbarkeit: Die Funktion setzt voraus, dass die PHP-Erweiterung intl installiert und aktiviert ist. Dies kann mit extension_loaded('intl') geprüft werden.