Signatur
Beschreibung
numfmt_get_text_attribute() ist die prozedurale Variante von NumberFormatter::getTextAttribute() und gibt den Wert eines bestimmten Text-Attributs des übergebenen Formatters zurück. Text-Attribute steuern, wie Zahlen textlich eingerahmt werden – etwa welches Zeichen oder welcher String vor einer positiven Zahl (NumberFormatter::POSITIVE_PREFIX) oder nach einer negativen Zahl (NumberFormatter::NEGATIVE_SUFFIX) erscheint.
Im Gegensatz zu numerischen Attributen (die mit numfmt_get_attribute() abgerufen werden) handelt es sich bei Text-Attributen um Zeichenketten. Typische Anwendungsfälle sind die Anpassung und Inspektion von Währungs- oder Buchhaltungsformaten, bei denen negative Zahlen z. B. in Klammern eingeschlossen oder mit individuellen Symbolen versehen werden sollen.
Die verfügbaren Text-Attribut-Konstanten sind unter anderem: NumberFormatter::POSITIVE_PREFIX, NumberFormatter::POSITIVE_SUFFIX, NumberFormatter::NEGATIVE_PREFIX, NumberFormatter::NEGATIVE_SUFFIX, NumberFormatter::PADDING_CHARACTER, NumberFormatter::CURRENCY_CODE und NumberFormatter::DEFAULT_RULESET.
Die Funktion setzt die intl-Erweiterung voraus. Bei Fehler gibt sie false zurück; der Fehlercode lässt sich anschließend mit numfmt_get_error_code() auslesen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | NumberFormatter | Das NumberFormatter-Objekt, dessen Text-Attribut ausgelesen werden soll. |
|
| $attribute Pflicht | int | Eine der NumberFormatter-Konstanten für Text-Attribute, z. B. NumberFormatter::POSITIVE_PREFIX, NumberFormatter::NEGATIVE_SUFFIX oder NumberFormatter::CURRENCY_CODE. |
Rückgabewert
string zurück. Im Fehlerfall (z. B. ungültiges Attribut) wird false zurückgegeben.Beispiele
Positiv- und Negativ-Präfix eines Dezimalformatters auslesen
<?php
$fmt = numfmt_create('de_DE', NumberFormatter::DECIMAL);
$posPräfix = numfmt_get_text_attribute($fmt, NumberFormatter::POSITIVE_PREFIX);
$negPräfix = numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX);
echo 'Positiv-Präfix: "' . $posPräfix . '"' . PHP_EOL;
echo 'Negativ-Präfix: "' . $negPräfix . '"' . PHP_EOL;
Währungscode eines Währungsformatters ermitteln
<?php
$fmt = numfmt_create('de_DE', NumberFormatter::CURRENCY);
$währungscode = numfmt_get_text_attribute($fmt, NumberFormatter::CURRENCY_CODE);
echo 'Währungscode: ' . $währungscode . PHP_EOL;
// Ausgabe einer formatierten Zahl zur Kontrolle
echo numfmt_format_currency($fmt, 1234.56, $währungscode) . PHP_EOL;
Fehlerbehandlung bei ungültigem Attribut
<?php
$fmt = numfmt_create('en_US', NumberFormatter::DECIMAL);
// Ein numerisches Attribut (kein Text-Attribut) wird übergeben
$ergebnis = numfmt_get_text_attribute($fmt, NumberFormatter::MAX_INTEGER_DIGITS);
if ($ergebnis === false) {
echo 'Fehler: ' . numfmt_get_error_message($fmt) . PHP_EOL;
echo 'Fehlercode: ' . numfmt_get_error_code($fmt) . PHP_EOL;
} else {
echo 'Wert: ' . $ergebnis . PHP_EOL;
}
// Wichtig · Fallstricke
Die Funktion ist die prozedurale Entsprechung zur OOP-Methode NumberFormatter::getTextAttribute(). Beide sind funktional identisch – die Wahl hängt vom bevorzugten Programmierstil ab.
Achtung: Nicht alle Attribute sind für jeden Formatter-Typ gültig. Das Attribut NumberFormatter::DEFAULT_RULESET ist beispielsweise nur für regelbasierte Formatter (z. B. NumberFormatter::SPELLOUT) verfügbar. Bei inkompatiblen Kombinationen wird false zurückgegeben.
Die intl-Erweiterung muss aktiviert sein (extension=intl in der php.ini). Die zugrundeliegenden Formatierungsregeln stammen aus der ICU-Bibliothek, deren Version das Verhalten beeinflussen kann.