Start · Sprachen · PHP · Referenz · collator_get_attribute

collator_get_attribute

Funktion

Liest den aktuellen Wert eines Collation-Attributs eines <code>Collator</code>-Objekts und gibt ihn als ganzzahligen Wert zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

collator_get_attribute(Collator $object, int $attribute): int|false

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

Typ
int|false
Beschreibung
Gibt den aktuellen Wert des Attributs als 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)";
}
Strength: TERTIARY (+ Groß-/Kleinschreibung)

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);
Numerische Sortierung wurde aktiviert. Array ( [0] => file1 [1] => file2 [2] => file10 [3] => file20 )

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